上下文菜单
天地之功不可仓促,艰难之业当累日月。 --后汉书
当用户长按某个视图或视图元素后出现的浮动菜单,菜单中所包含的动作是与用户所选择视图元素相关的
Android系统中的两种上下文菜单模式
浮动模式
用户在视图元素上执行一个长点击(按住并保持)事件,上下文菜单项浮动列表会弹出,类似对话框,显示在原有视图的上面,覆盖原有的部分用户界面。用户可以每次在浮动菜单中选择一个可执行动作。
动作模式
- 这种模式是ActionMode的系统实现,可以在屏幕顶部显示上下文动作条,其中的菜单项是与所选视图元素相关的动作。用户可以在使用上下文菜单的动作条中选择一个或者多个动作。
- 这种模式只有在Android3.0或者更高版本中可用,是使用上下文菜单的推荐模式。
浮动模式创建步骤
-
创建弹出菜单配置文件XML
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.contextmenu.MainActivity"> <item android:id="@+id/action_AY" android:orderInCategory="50" android:title="@string/AY" app:showAsAction="ifRoom" /> <item android:id="@+id/action_GZ" android:orderInCategory="100" android:title="@string/GZ" app:showAsAction="ifRoom" /> </menu>
-
添加弹出菜单到对应的View控件上
im = findViewById(R.id.image);
-
创建上下文菜单
-
覆盖Activity的onCreateContextMenu()方法
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { getMenuInflater().inflate(R.menu.menu_main,menu); super.onCreateContextMenu(menu, v, menuInfo); }
-
调用Menu的add()方法添加菜单项(Menulitem)
menu.add(0,3,0,"玩耍"); /* * 第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单选项 * 第二个int类型的Item ID参数,代表的是项目编号。这个参数非常重要 * 第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认0 * 第三个String类型的title参数,表示的是选项中的显示文字 * */
-
-
调用registerForContextMenu()方法为视图注册上下文菜单
registerForContextMenu(im);
-
-
定义菜单事件响应
-
覆盖Activity的onContextItemSelected()来响应事件
@SuppressLint("NonConstantResourceId") @Override public boolean onContextItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.action_AY: im.
-