0

我在溢出菜单中添加了一些复选框。一旦我单击溢出菜单中的复选框,我希望我的溢出菜单保持而不是消失。我怎样才能做到这一点?感谢帮助。

这是我的菜单 xml 文件

<item
    android:id="@+id/action_check"
    android:title="@string/action_check"
    android:orderInCategory="1"
    app:showAsAction="never"
    android:visible="true"
    android:checkable="true"/>
<item android:id="@+id/notification"
    android:orderInCategory="2"
    android:title="@string/notification"
    app:showAsAction="never"
    android:visible="true"
    android:checkable="true"/>
<item android:id="@+id/about"
    android:orderInCategory="3"
    android:title="@string/about"
    app:showAsAction="never"></item>
4

2 回答 2

3

我就是这样做的。

在实现选项菜单的活动中添加以下代码。

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //your checking other stuff
        item.setChecked(!item.isChecked());

        //main part for holding onto the menu
        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
        item.setActionView(new View(this));
        item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                return false;
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                return false;
            }
        });
        return false;
    }

通过添加以下行:item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);我正在标记该项目,因为它具有可展开/可折叠的行为,因此它将调用setOnActionExpandListener.

这里的这一行: item.setActionView(new View(this));是项目处于展开状态时的视图。它只是一个虚拟视图,因为我们永远不会让它展开我接下来要解释的方式。

您会看到我从setOnActionExpandListener抑制项目扩展和折叠的两种方法中返回 false,因此我们在上一步中提供的视图将永远不会显示并且菜单将保持打开状态。

以下将是您的菜单文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <group android:checkableBehavior="all">


        <item
            android:id="@+id/action_check"
            android:orderInCategory="1"
            android:title="Title 1"
            app:showAsAction="never" />

        <item
            android:id="@+id/notification"
            android:orderInCategory="2"
            android:title="Title 2"
            app:showAsAction="never" />

        <item
            android:id="@+id/about"
            android:orderInCategory="3"
            android:title="Title 3"
            app:showAsAction="never" />

    </group>

</menu>

请注意,该行group android:checkableBehavior="all"是告诉组中的所有项目都将具有可检查的行为,因此您不必在每个项目中编写可检查的。

于 2018-09-05T05:50:04.783 回答
0

group 是共享某些特征的菜单项的集合,有关更多信息,请参阅

<group android:id="@+id/group>
    <item
        android:id="@+id/action_check"
        android:title="@string/follow"
        android:orderInCategory="1"
        app:showAsAction="never"
        android:visible="true"
        android:checkable="true"/>
    <item android:id="@+id/notification"
        android:orderInCategory="2"
        android:title="@string/notification"
        app:showAsAction="never"
        android:visible="true"
        android:checkable="true"/>
    <item android:id="@+id/about"
        android:orderInCategory="3"
        android:title="@string/about_us"
        app:showAsAction="never"/>
</group>
于 2018-09-05T04:17:02.803 回答