创建选项菜单的核心步骤:
1.在res下新建menu文件夹,右键new一个Anderoid resource directory创建menu文件夹
2.在menu文件夹下创建xml文件,右键NEW一个 Menu resource file文件
3.在问价夹下,写子条目
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/one"
android:title="listView"
app:showAsAction="never"></item>
<item
android:id="@+id/two"
android:title="GridView"
app:showAsAction="never"></item>
<item
android:id="@+id/three"
android:title="瀑布流"
app:showAsAction="never"></item>
</menu>
4.
(1) 重写Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被加载时调用
(2)调用Menu 的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem的setIcon()方法为菜单项设置图标(注:Android 3.0之后,即使添加了图标也不会显示)
(3)重写Activity的OptionsItemSelected(MenuItem item)来响应菜单项(MenuItem)的点击事件
来看一下具体的代码实现:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.item, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case R.id.one:
//listView
re.setLayoutManager(new LinearLayoutManager(MainActivity.this));
break;
case R.id.two:
//gridview
re.setLayoutManager(new GridLayoutManager(MainActivity.this,2));
break;
case R.id.three:
//流失布局
re.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.HORIZONTAL));
break;
}
return super.onOptionsItemSelected(item);
}
5.如果想让MenuItem变成
ActionBar的形式,可以修改res/menu/main.xml中的
android:showAsAction属性,它的属性值一共有下面几种:
1.其中,ifRoom表示:如果有空间,就显示出来。withText表示:只显示文本(如果配了图标的话)