在ToolBar上创建菜单

好久没写过界面了,最近用最新的支援库,官方建议AppBar+ToolBar代替原ActionBar。然后翻了一下怎么往ToolBar上创建按钮,翻了半天没一个可以。。。最后发现把onCreateOptionsMenu丢了(网上的大爷们这么默契,全部都把这部分代码忽略掉真的好吗)。附上ToolBar上创建菜单的方法。

Activity中写入:

(XML方式)

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_check, menu);
    return true;
}

 

menu_check.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".CheckActivity">

    <item android:id="@+id/action_controller"
        android:title="@string/start"
        android:orderInCategory="90"
        app:showAsAction="always|withText" />
</menu>
或:
(代码方式)
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, Menu.FIRST + 1, 1, "设置")
        .setIcon( android.R.drawable.ic_menu_help)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    return true;
}

菜单会显示在ToolBar右上角。setShowAsAction相当xml中的app:showAsAction。withText作用是把菜单的文字显示出来,如果想仅显示文字,不设置icon即可。

然后在onOptionsItemSelected中处理点击事件:

    @Override  
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){  
           case R.id.action_controller: // XML方式
               Toast.makeText(MainActivity.this, "设置1", Toast.LENGTH_SHORT).show();  
               break;  
           case Menu.FIRST + 1: // Java代码方式,仅作示例,两种方法不应混用
               Toast.makeText(MainActivity.this, "设置2", Toast.LENGTH_SHORT).show();  
               break;  
           } 

        return super.onOptionsItemSelected(item);  
    }  

版权所有,转载请注明出处:

http://sickworm.com/?p=76