Android Menu

android提供了三种菜单类型,分别为options menu,context menu,sub menu。

options menu就是通过按home键来显示,context menu需要在view上按上2s后显示。这两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单。options menu最多只能在屏幕最下面显示6个菜单选项,称为icon menu,icon menu不能有checkable选项。多于6的菜单项会以more icon menu来调出,称为expanded menu。options menu通过activity的onCreateOptionsMenu来生成,这个函数只会在menu第一次生成时调用。任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。onOptionsItemSelected 用来处理选中的菜单项。

context menu是跟某个具体的view绑定在一起,在activity种用registerForContextMenu来为某个view注册context menu。context menu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelected用来处理选中的菜单项。

android还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用 setGroupCheckable,setGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。
生成动态菜单android.view.Menu.addIntentOptions(int groupId,int itemId,int order,ComponentName caller, Intent[] specifics, Intent intent,int flags,MenuItem[] outSpecificItems)

Specifics 以action+uri的具体方式来增加激活相应activity的菜单项

Intent 以categroy+uri这种一般形式来增加激活相应activity 的菜单项

参数Intent和Specifics的区别是,一个用categroy+uri来匹配activity,一个用action+uri 来匹配activity。

//按Action查找

Intent[] specifics = new Intent[1];

specifics[0] = new Intent(Intent.ACTION_EDIT, uri);

//按Category查找,Action设为null

Intent intent = new Intent(null, uri);

intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

MenuItem[] items = new MenuItem[1];

menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, null, specifics, intent, 0, items);

更多相关文章

  1. android 属性汇总
  2. Android(安卓)Menu
  3. Android(安卓)之 Notification
  4. 【Android开发学习15】Android(安卓)OpenGL ES 纹理映射之glDraw
  5. 【Android】 保存图片到系统图库, 并立即显示在图库中
  6. Android(安卓)TextView属性详解
  7. XML-layer-list
  8. 解决TextView中MaxLines与ellipsize=end冲突问题
  9. Android系统服务-WindowManager

随机推荐

  1. Android(安卓)蓝牙( Bluetooth)耳机连接
  2. Android(安卓)Intent和按钮响应事件的几
  3. 地图入门(一):Android上使用Google Maps加标
  4. android4.3应用程序隐藏状态栏和标题栏
  5. Android(安卓)颜色渲染(十) ComposeShade
  6. 基础 Android(安卓)开发规范整理
  7. Android(安卓)代码执行Linux Shell小记
  8. Android属性之android:priority
  9. 2011.08.29——— android dip px解析及
  10. Android快速入门相关(一)