Возможность одновременного выбора нескольких пунктов меню - PullRequest
0 голосов
/ 31 мая 2018

Я хочу иметь возможность выбрать несколько элементов одновременно, как показано на следующем рисунке:

enter image description here

С помощью следующего кода я тольковозможность выбрать по одному элементу за раз:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group
        android:id="@+id/nav_group1"
        android:checkableBehavior="single">

        <item
            android:id="@+id/nav_item1"
            android:checkable="true"
            android:title="Item 1" />

        <item
            android:id="@+id/nav_item2"
            android:checkable="true"
            android:title="Item 2" />

        <item
            android:id="@+id/nav_item3"
            android:checkable="true"
            android:title="Item 3" />

    </group>

    <group
        android:id="@+id/nav_group2"
        android:checkableBehavior="single">

        <item android:id="@+id/nav_item4"
            android:checkable="true"
            android:title="Item 4" />

        <item android:id="@+id/nav_item5"
            android:checkable="true"
            android:title="Item 5" />

        <item android:id="@+id/nav_item6"
            android:checkable="true"
            android:title="Item 6" />

    </group>

</menu>

В коде Java я вручную проверяю выбранный пункт меню, но ранее проверенные элементы всегда становятся непроверенными.Как я могу предотвратить это?

mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {
        menuItem.setChecked(true);
        return true;
    }
});

1 Ответ

0 голосов
/ 31 мая 2018

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

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if(Build.VERSION.SDK_INT > 11) {
        invalidateOptionsMenu();
        menu.findItem(R.id.option2).setVisible(false);
        menu.findItem(R.id.option4).setVisible(true);
    }
    return super.onPrepareOptionsMenu(menu);
}
...