在ToolBar上创建菜单
Android UI  ·  
好久没写过界面了,最近用最新的支援库,官方建议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);
}
版权所有,转载请注明出处: