如何在Android中创建带单选按钮的子菜单?

时间:2012-05-26 17:37:32

标签: android contextmenu

我在一个简单的情况下遇到了问题(至少看起来像这样)。我需要动态创建一个上下文菜单的子菜单,并为每个项目提供一个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);

这使得子菜单在每个项目中都有一个复选框,并且复选框专门工作,但我想要无线电影像,因为它们看起来更直观,可以进行独占选择。

那么,如何实现呢?

2 个答案:

答案 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);

此代码按预期工作,即子菜单中的项目显示单选按钮而不是复选框。

相关问题