Android一共有三种形式的菜单:
1.选项菜单(optinosMenu)
2.上下文菜单(ContextMenu)
3.子菜单(subMenu)
初始化菜单,返回true则显示该menu,false 则不显示。
MainActivity.java:
1.选项菜单(optinosMenu)
2.上下文菜单(ContextMenu)
3.子菜单(subMenu)
其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来。
主要方法:
1.public boolean onCreateOptionsMenu(Menu menu)初始化菜单,返回true则显示该menu,false 则不显示。
(只会在第一次初始化菜单时调用)
2.public boolean onPrepareOptionsMenu(Menu menu)
菜单被显示前调用,返回true则显示该menu,false 则不显示。
(可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等)
3.public void onOptionsMenuClosed(Menu menu)
每次菜单被关闭时调用。
(菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项)
4.public boolean onOptionsItemSelected(MenuItem item)
菜单项被点击时调用
添加菜单:
可以在onCreateOptionsMenu()或者onPrepareOptionsMenu()方法中来添加菜单代码添加:
menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID)
四个参数,依次是:
1、组别,如果不分组的话就写Menu.NONE,
2、Id,用于确定不同的菜单
3、顺序,哪个菜单项在前面由这个参数的大小决定
4、文本,菜单项的显示文本
add()方法返回的是MenuItem对象,调用其setIcon()方法,为相应MenuItem设置Icon
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, Menu.First+1, 0, "设置").setIcon(R.drawable.setting);
return true;
}
布局文件添加:
res/menu/main.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/add_item"
android:title="Add"
/>
<item
android:id="@+id/remove_item"
android:title="Remove"
/>
<item
android:id="@+id/finish_item"
android:title="Finish"
/>
</menu>
MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 用于初始化菜单,menu参数就是将显示的Menu实例
// 只会在第一次初始化菜单时调用
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInfalter() 方法获取 MenuInflater对象
// 再调用inflate()方法创建菜单
getMenuInflater().inflate(R.menu.main, menu);
// return true则显示菜单,false则不显示
return true;
}
// 定义菜单响应事件,菜单项被点击时调用
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { // 判断点击的菜单项
case R.id.add_item:
Toast.makeText(this, "点击了Add菜单", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "点击了Remove菜单", Toast.LENGTH_SHORT).show();
break;
case R.id.finish_item:
finish();
default:
}
return true;
}
}