我在一个简单的情况下遇到了问题(至少看起来像这样)。我需要动态创建一个上下文菜单的子菜单,并为每个项目提供一个radiobox。我做了很多试验。当我调用menu.setGroupCheckable(0, true, true)
时,默认情况下菜单本身为0,它会按预期在每个菜单项的右侧显示单选按钮,但我需要这个用于子菜单。所以我有以下代码:
SubMenu sub = menu.addSubMenu(R.string.name);
int count = 1000;
for(String e : someList)
{
MenuItem item = sub.add(1, count, count, e);
count++;
}
menu.setGroupCheckable(1, true, true);
在这种情况下,我既没有看到放射线框,也没有看到子菜单中的复选框。然后我写了下面的代码:
SubMenu sub = menu.addSubMenu(R.string.name);
int count = 1000;
for(String e : someList)
{
MenuItem item = sub.add(1, count, count, e);
item.setCheckable(true);
count++;
}
menu.setGroupCheckable(1, true, true);
这使得子菜单在每个项目中都有一个复选框,并且复选框专门工作,但我想要无线电影像,因为它们看起来更直观,可以进行独占选择。
那么,如何实现呢?
答案 0 :(得分:21)
将xml中的checkableBehavior设置为single。 这是一些代码:
<menu>
<group android:id="@+id/group"
android:checkableBehavior="single">
<item android:id="@+id/menu_sort_by_name"
android:title="@string/action_sort_by_name"/>
<item android:id="@+id/menu_sort_by_last_edit"
android:title="@string/action_sort_by_last_edit"/>
</group>
</menu>
答案 1 :(得分:12)
我发现菜单和子菜单组是分开处理的,即在子菜单中形成的组,应通过子菜单进行处理,而不是通过顶级菜单进行处理。因此,解决方案是致电:
sub.setGroupCheckable(1, true, true);
此代码按预期工作,即子菜单中的项目显示单选按钮而不是复选框。