1. 创建menu
目录
首先需要在layout
目录下创建menu
目录:
2. 创建xml
文件
在menu
目录下创建xml
文件,每一个xml
文件对应一个menu
.
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">
<item
android:id="@+id/item_day"
android:orderInCategory="100"
android:title="@string/day_chart"
app:showAsAction="never"/>
<item
android:id="@+id/item_week"
android:orderInCategory="100"
android:title="@string/week_chart"
app:showAsAction="never"/>
<item
android:id="@+id/item_month"
android:orderInCategory="100"
android:title="@string/month_chart"
app:showAsAction="never"/>
<item
android:id="@+id/item_year"
android:orderInCategory="100"
android:title="@string/year_chart"
app:showAsAction="never"/>
</menu>
PS: Android Studio非常贴心的为menu
下的xml
文件也创建了预览视图:
属性解释
app:showAsAction="never"
:永远不会显示。只会在溢出列表中显示,而且只显示标题,所以在定义item的时候,最好把标题都带上。
app:showAsAction="always"
无论是否溢出,总会显示。
app:showAsAction="ifRoom"
:如果有位置才显示,不然就出现在右边的三个点中。
android:orderInCategory="100"
设置优先级,值越大优先级越低
3. 在Activity中复写相关代码
需要复写两个方法,直接上代码了:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.some_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
onOptionsItemSelected()
返回值解释:
return super.onOptionsItemSelected(item)
:对没有处理的事件,交给父类来处理。
return true
:表示处理完菜单项的事件,不需要将该事件继续传播。
补充
关于为menu
添加icon
,Android4.0
及以后已经默认icon
是不显示的,具体可以看这篇文章:
http://blog.csdn.net/csdn_blog_lcl/article/details/52596830
以上