OptionMenu基本使用
下图是一个基本的OptionMenu,基本使用是三个步骤:创建资源文件、重写onCreateOptionsMenu
加载菜单、重写onOptionsItemSelected
处理点击事件。
Step1:创建资源文件
上图图中的三个点是其他隐藏的菜单,以下我们成为折叠菜单
。
这里简单说一下showAsAction
,它包含但不仅有以下几种:
1、always
表示无论标题栏是否有地方,都显示在最上方,而不显示在折叠菜单
中。
2、never
永远显示在折叠菜单
中。
3、ifRoom
如果标题栏有地方就显示在标题栏,否则显示在折叠菜单
中。
<?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">
<item
android:id="@+id/btnAdd"
android:icon="@mipmap/add"
android:title="Add"
app:showAsAction="always"></item>
<item
android:id="@+id/btnEdit"
android:icon="@mipmap/edit"
android:title="Edit"
app:showAsAction="always"></item>
<item android:title="OptionMenu1"></item>
<item android:title="OptionMenu2"></item>
<item android:title="OptionMenu3"></item>
</menu>
OptionMenu可同时在Activity和Fragment中加载,以下将演示两种方式。
在Activity中加载OptionMenu
Step2:重写onCreateOptionsMenu
加载菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_home, menu);
return true;
}
重写后要返回true,否则菜单不会显示,通过下图在Activity中的onCreateOptionsMenu
注释就可以知道。
译为:为了显示这个menu,你必须返回true,如果你返回false这个menu将不会被显示出来。
Step3:重写onOptionsItemSelected
处理点击事件
参数传来的就是我们点中的MenuItem对象,从中可以拿到Titile、Id等。如果这里不想将事件交给下一级处理直接返回true即可(这里主要是在Fragment也加载了OptionMenu的情况下,在下边展开来说)。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
return true