Android菜单使用
16lz
2021-01-26
使用代码创建菜单的方式会使的代码臃肿,不利于后期修改和维护,程序可读性低,故下面介绍Andoird流行和推荐的菜单的定义方式:XML文件定义菜单。
进入正题,XML定义菜单的实例代码如下:
一、选项菜单加载到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) { // 设置弹出式菜单项的点击事件 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"?>
更多相关文章
- 在Android应用中定制菜单
- Android(安卓)Camera 通过V4L2与kernel driver的完整交互过程
- 【起航计划 014】2015 起航计划 Android(安卓)APIDemo的魔鬼步伐
- android中不同activity之间共享数据
- android之Android(安卓)Studio下自定义属性的定义和使用
- Android:SlidingMenu(侧滑菜单)用法示例
- Android自定义View—小巧清爽的多节点进度条
- Android(安卓)Gradle文件下获取自定义properties文件,并且获取值
- Android(安卓)彩色上下文菜单 Context