Android用onCreateOptionsMenu()创建optinosMenu

Android一共有三种形式的菜单:
            1.选项菜单(optinosMenu)
            2.上下文菜单(ContextMenu)
            3.子菜单(subMenu)

其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来。


主要方法:

1.public boolean onCreateOptionsMenu(Menu menu)
初始化菜单,返回true则显示该menu,false 则不显示。

(只会在第一次初始化菜单时调用)

 2.public boolean onPrepareOptionsMenu(Menu menu)
菜单被显示前调用,返回true则显示该menu,false 则不显示。

 (可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等)

3.public void onOptionsMenuClosed(Menu menu)
每次菜单被关闭时调用。
(菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项)
              
4.public boolean onOptionsItemSelected(MenuItem item)
菜单项被点击时调用


添加菜单:

可以在onCreateOptionsMenu()或者onPrepareOptionsMenu()方法中来添加菜单

代码添加:

menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID)
四个参数,依次是:
1、组别,如果不分组的话就写Menu.NONE, 
2、Id,用于确定不同的菜单 
3、顺序,哪个菜单项在前面由这个参数的大小决定 
4、文本,菜单项的显示文本

add()方法返回的是MenuItem对象,调用其setIcon()方法,为相应MenuItem设置Icon

public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu.add(Menu.NONE, Menu.First+1, 0, "设置").setIcon(R.drawable.setting);
        return true;
}

布局文件添加:

res/menu/main.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item 
        android:id="@+id/add_item"
        android:title="Add"
        />
    <item 
        android:id="@+id/remove_item"
        android:title="Remove"
        />
    <item 
        android:id="@+id/finish_item"
        android:title="Finish"
        />

</menu>

MainActivity.java:
public class MainActivity extends Activity {
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // 用于初始化菜单,menu参数就是将显示的Menu实例
    // 只会在第一次初始化菜单时调用
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // getMenuInfalter() 方法获取 MenuInflater对象
        // 再调用inflate()方法创建菜单
        getMenuInflater().inflate(R.menu.main, menu);
        // return true则显示菜单,false则不显示
        return true; 
    }

    // 定义菜单响应事件,菜单项被点击时调用
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) { // 判断点击的菜单项
        case R.id.add_item:
            Toast.makeText(this, "点击了Add菜单", Toast.LENGTH_SHORT).show();
            break;
        case R.id.remove_item:
            Toast.makeText(this, "点击了Remove菜单", Toast.LENGTH_SHORT).show();
            break;
        case R.id.finish_item:
            finish();
        default:
        }
        return true;
    }
    
    

    
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-06-09 16:16  包清骏  阅读(305)  评论(0编辑  收藏  举报