Как удерживать меню переполнения после того, как я нажму на него? - PullRequest
0 голосов
/ 05 сентября 2018

Я добавил несколько флажков в меню переполнения. Я хочу, чтобы мое меню переполнения удерживалось, а не исчезало, как только я установил флажок в меню переполнения. Как я могу это сделать? Спасибо за помощь.

Это мой файл меню 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>

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вот как я это сделал.

Добавьте следующий код в вашу деятельность, где реализовано меню опций.

@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)); - это вид, когда элемент находится в развернутом состоянии. Это просто фиктивный вид, потому что мы никогда не позволим ему развернуть, как я собираюсь объяснить далее.

Вы видите, что я возвращаю false из обоих методов setOnActionExpandListener, чтобы подавить расширение и свертывание элемента, поэтому представление, которое мы дали в предыдущем шаге, никогда не будет отображаться, и меню останется открытым.

Ниже будет ваш файл меню:

<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", которая говорит о том, что все элементы в группе будут иметь проверяемое поведение, так что вам не придется писать проверяемые в каждом элементе.

0 голосов
/ 05 сентября 2018

группа представляет собой набор пунктов меню, которые имеют определенные черты, для получения дополнительной информации см.

<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>
...