您的位置:首页 > 移动开发 > Android开发

Android菜单使用

2016-09-20 14:12 169 查看
使用代码创建菜单的方式会使的代码臃肿,不利于后期修改和维护,程序可读性低,故下面介绍Andoird流行和推荐的菜单的定义方式:XML文件定义菜单。

进入正题,XML定义菜单的实例代码如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="@string/font_size"
android:icon="@drawable/font"
android:showAsAction="ifRoom|withText">
<menu>
<!--定义一组单选菜单项-->
<group android:checkableBehavior="single">
<item
android:id="@+id/font_10"
android:title="@string/font_10" />
<item
android:id="@+id/font_12"
android:title="@string/font_12"/>
<item
android:id="@+id/font_14"
android:title="@string/font_14"/>
<item
android:id="@+id/font_16"
android:title="@string/font_16"/>
</group>
</menu>
</item>
<!--定义一个普通菜单项-->
<item android:title="@string/plain_item"
android:id="@+id/plain_item">
</item>
<item
android:title="@string/font_color"
android:icon="@drawable/color"
android:showAsAction="ifRoom|withText">
<menu>
<!--定义一组多选菜单项-->
<group android:checkableBehavior="all">
<item android:id="@+id/font_red"
android:title="@string/font_red"/>
<item android:id="@+id/font_green"
android:title="@string/font_green"/>
<item android:id="@+id/font_blue"
android:title="@string/font_blue"/>
</group>
</menu>
</item>
</menu>

一、选项菜单加载到Activity中的方法如下:

在MainAcitivity中创建方法

public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.menu_main,menu);
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.font_10:
txt.setTextSize(10 * 2);
item.setChecked(true);  //  这条语句设置点击后的已选择效果
break;
case R.id.font_12:
txt.setTextSize(12 * 2);
item.setChecked(true);
break;
}
return super.onOptionsItemSelected(item);
}

onCreateOptionsMenu(Menu menu)将定义好的菜单文件加载到Activity的菜单中去
onOptionsItemSelected(MenuItem item){}设置菜单项的点击事件


二、对于上下文菜单

在Activity中新建下面两个方法:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.context_menu,menu);
menu.setHeaderIcon(R.drawable.color);
menu.setHeaderTitle("请选择背景颜色");
}
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.red:
//  你的操作
break;
}
return super.onContextItemSelected(item);
}
onCreateContextMenu(Menu menu)将定义好的菜单文件加载到Activity的菜单中去
onContextItemSelected(MenuItem item){}设置上下文菜单项的点击事件
需要使用上下文菜单的组件可以再Activity中的onCreate()方法中注册上下文菜单,代码如下:
registerForContextMenu(View v); // 组件v注册了上下文菜单,长按该组件就能弹出该上下文菜单
三、PopupMenu创建弹出式菜单,使用步骤如下:
1.  调用 new PopupMenu(Context context,View anchor)创建下拉菜单,anchor是要激发该菜单的组件
(菜单在该anchor下显示)
2.  调用getMenuInflater.inflate(R.menu.x,new PopupMenu(Context context,View anchor))方法
将菜单资源填充到PopupMenu中去
3. popMenu.show()方法显示弹出菜单

具体使用的代码如下:

PopupMenu popupMenu = new PopupMenu(MainActivity.this,findViewById(R.id.txt)); //  弹出式菜单将在这个id为txt的组件下显示
getMenuInflater().inflate(R.menu.popup_menu,popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) { //  设置弹出式菜单项的点击事件</span>
switch(item.getItemId()){
case R.id.hide:
popupMenu.dismiss();  //隐藏菜单
break;
default:
Toast.makeText(MainActivity.this, "点击了"+item.getTitle()+"菜单项",
Toast.LENGTH_SHORT).show();
}
return true;
}
});
popupMenu.show();
其中的R.menu.popup_menu的文件定义如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/search"
android:title="@string/search"/>
<item android:id="@+id/edit"
android:title="@string/edit"/>
<item android:id="@+id/delete"
android:title="@string/delete"/>
<item android:id="@+id/hide"
android:title="@string/hide"/>
</menu>





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息