菜单组
春有百花秋有月,夏有凉风冬有雪。 --颂古五十五首其一
菜单组是菜单项集合,可用来为菜单项设置共同的属性
菜单分组
-
使用可以对菜单项目进行
- 菜单组可以在菜单资源文件中定义,把元素嵌套在元素中来创建分组菜单
<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.menudemo2.MainActivity"> <item android:id="@+id/item1" android:orderInCategory="100" android:title="普通项" app:showAsAction="never" /> <item android:id="@+id/item2" android:orderInCategory="100" android:title="普通项" app:showAsAction="never" /> <group android:id="@+id/group1" android:checkableBehavior="single"> <item android:id="@+id/item3" android:orderInCategory="100" android:title="菜单组1: 单选按钮1" app:showAsAction="never" /> <item android:id="@+id/item4" android:orderInCategory="100" android:title="菜单组1: 单选按钮2" app:showAsAction="never" /> </group> <group android:id="@+id/group2" android:checkableBehavior="all"> <item android:id="@+id/item5" android:orderInCategory="100" android:title="菜单组2: 多选按钮1" app:showAsAction="never" /> <item android:id="@+id/item6" android:orderInCategory="100" android:title="菜单组2: 多选按钮2" app:showAsAction="never" /> </group> </menu>android:checkableBehavior="" 控制选项为单选还是多选
-
在Android应用程序中,使用带有分组Id的add()方法来创建分组
menu.add(1,2,0,"增加组:普通项1"); menu.add(1,1,0,"增加组:普通项2public void onCreateContextMenu()方法中添加
/*
- 第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单选项
- 第二个int类型的Item ID参数,代表的是项目编号。这个参数非常重要
- 第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认0
- 第三个String类型的title参数,表示的是选项中的显示文字
- */
- 第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单选项
-
对于同一个中的,可以通过menu执行以下操作:
-
public void setGroupVisible(int group, boolean visible);
menu.setGroupVisible(R.id.group1,false);- 显示或隐藏组内的所有元素
- group指的是元素的id属性
-
public void setGroupEnabled(int group, boolean enabled);
menu.setGroupEnabled(R.id.group1,true);- 弃用或者金庸组内的所有项目
-
public void setGroupCheckable(int group, boolean checkable,boolean exclusive);
menu.setGroupCheckable(R.id.group2,true,false);- 指定组内的所有选项是否可选中
- exclusive为true,代表菜单项为单选模式,否则为多选模式
-
整个源码
-
menu.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.menudemo2.MainActivity"> <item android:id="@+id/item1" android:orderInCategory="100" android:title="普通项" app:showAsAction="never" /> <item android:id="@+id/item2" android:orderInCategory="100" android:title="普通项" app:showAsAction="never" /> <group android:id="@+id/group1" android:checkableBehavior="single"> <item android:id="@+id/item3" android:orderInCategory="100" android:title="菜单组1: 单选按钮1" app:showAsAction="never" /> <item android:id="@+id/item4" android:orderInCategory="100" android:title="菜单组1: 单选按钮2" app:showAsAction="never" /> </group> <group android:id="@+id/group2" android:checkableBehavior="all"> <item android:id="@+id/item5" android:orderInCategory="100" android:title="菜单组2: 多选按钮1" app:showAsAction="never" /> <item android:id="@+id/item6" android:orderInCategory="100" android:title="菜单组2: 多选按钮2" app:showAsAction="never" /> </group> </menu> -
java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); Button button = findViewById(R.id.group_button); registerForContextMenu(button); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { getMenuInflater().inflate(R.menu.menu_main,menu); menu.setGroupVisible(R.id.group1,false); menu.setGroupEnabled(R.id.group1,true); menu.setGroupCheckable(R.id.group2,true,false); menu.add(1,2,0,"增加组:普通项1"); menu.add(1,1,0,"增加组:普通项2"); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.item1: case R.id.item2: case R.id.item3: case R.id.item4: case R.id.item5: case R.id.item6: case 1: case 2: Toast.makeText(this,item.getTitle()+"",Toast.LENGTH_SHORT).show(); return true; } return super.onContextItemSelected(item); } }
646



被折叠的 条评论
为什么被折叠?



