【问题标题】:Checks not showing in Options Menu检查未显示在选项菜单中
【发布时间】:2012-01-05 09:28:53
【问题描述】:

有时在做一些非常简单的事情时,你会错过一些大事。我一定是错过了一些重大的事情,因为我没有快速取得任何进展(而且在网上筛选了一个小时也没有发现任何东西)。

我想要一个菜单​​,其中包含在组中带有复选标记的项目——就像一个简单的 RadioGroup 布局一样。我得到了菜单,但没有任何类型的复选标记。

这里是 res/menu/options_menu.xml:

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/item1"
            android:title="item1"
        />
        <item
            android:id="@+id/item2"
            android:title="item2"
        />
        <item
            android:id="@+id/item3"
            android:title="item3"
            android:checked="true"
        />
    </group>

</menu>

当然,这是我的 Activity 中的相关方法:

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);
    return true;
}

这是我能做到的最简单的事情——关于我缺少什么的任何想法?

【问题讨论】:

    标签: android menu options checked


    【解决方案1】:

    我认为您尝试创建选项菜单(通过单击菜单按钮显示)并根据此

    注意:图标菜单中的菜单项(来自选项菜单)不能 显示复选框或单选按钮。如果您选择在 图标菜单可勾选,您必须通过手动指示勾选状态 每次状态改变时交换图标和/或文本。

    您不能在 OptionsMenu 中添加组菜单。所以我认为你应该使用上下文菜单或子菜单。 看看这个article

    【讨论】:

    • 是的,这一定是问题所在。
    【解决方案2】:

    解决方法如下:

    在您的 strings.xml 文件中,您可以嵌入一个 unicode 复选标记。有两种可供选择。对于这个项目,我更喜欢 \u2714 的更友好的检查。然后,您可以根据需要通过 onPrepareOptionsMenu() 将带有复选标记的字符串替换为不带复选标记的字符串。

    这里的 xml 代码有两个字符串,一个带一个不带复选标记:

        <string name="opp_random">unchecked</string>
        <string name="opp_random_check">\u2714 checked</string>
    

    编码愉快!

    【讨论】:

      【解决方案3】:

      怎么样

      android:checkable="true"
      

      【讨论】:

      • 哦,是的,我确实试过了。不幸的是,Style 解决了这个问题。我做了一个我在下面发布的解决方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多