@tianyu-211
2016-12-28T02:00:01.000000Z
字数 2259
阅读 1569
安卓
Android的菜单按钮
在res下的menu目录下新建一个main.xml文件,以menu为根节点,添加一个item就是菜单项
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_go"
android:orderInCategory="1"
android:title="前进"/>
<item
android:id="@+id/action_back"
android:orderInCategory="2"
android:title="后退"/>
<item
android:id="@+id/action_refresh"
android:orderInCategory="3"
android:title="刷新"/>
</menu>
在Activity中复写onCreateOptionsMenu方法,将一个资源转换成menu对象
//初始化当前Activity的菜单项
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//1.使用菜单填充器将一个菜单资源设置给menu对象
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
如果想要让菜单项有点击效果,需要复写Activity的onMenuItemSelected方法,然后去获取id,进行id的对比。
//要想对菜单项设置点击事件需要复写一个方法
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
//获取当前点击的菜单项的Id
switch (item.getItemId()) {
case R.menu.action_back:
Toast.makeText(getApplicationContext(), "后退", 0).show();
break;
case R.menu.action_go:
Toast.makeText(getApplicationContext(), "前进", 0).show();
break;
case R.menu.refresh:
Toast.makeText(getApplicationContext(), "刷新", 0).show();
break;
}
return super.onMenuItemSelected(featureId, item);
}
使用代码的方式来添加菜单选项,就不用创建xml文件了,直接在onCreateOptionsMenu()方法中用menu.add()来添加菜单选项
//在Activity中复写onCreateOptionsMenu方法,代码添加一个menu的选项
groupid
:item所在的分组
itemId
:选项id
order
: 顺序
title
: 文本
menu.add(1, 0, 1, "示例");
@Override
public boolean onCreateOptionsMenu(Menu menu) {
/* //1.使用菜单填充器将一个菜单资源设置给menu对象
getMenuInflater().inflate(R.menu.main, menu);*/
//2.使用代码添加菜单项 groupId:分组Id itemId:菜单项的Id orderId:菜单顺序 title:文本
menu.add(0, 0, 1, "前进");
menu.add(0, 1, 2, "后退");
menu.add(0, 2, 3, "刷新1");
return true;
}
在点击菜单选项的时候我们应该改成,与add()方法添加的 itemId 所对应。
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
//获取当前点击的菜单项的Id
switch (item.getItemId()) {
case 1:
Toast.makeText(getApplicationContext(), "后退", 0).show();
break;
case 0:
Toast.makeText(getApplicationContext(), "前进", 0).show();
break;
case 2:
Toast.makeText(getApplicationContext(), "刷新", 0).show();
break;
}
return super.onMenuItemSelected(featureId, item);
}
或者可以在该方法中定义自定义Dialog
/**当点击菜单按键时调用*/
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("aa");
builder.setMessage("bbb");
builder.show();
return false;
}