菜单中的所选项目

时间:2017-10-31 15:03:31

标签: android menu kotlin navigation-drawer menuitem

如何在菜单中正确显示所选项目? via(灰色背景):

enter image description here

目前:

enter image description here

为什么没有灰色背景?

我的XML菜单:

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

    <group>

        <item
            android:id="@+id/night"
            android:icon="@drawable/ic_brightness_3_black_24dp"
            android:title="@string/navigation_view_item_1" />

        <item
            android:id="@+id/nearbyParkingPlaces"
            android:icon="@drawable/ic_local_parking_black_24dp"
            android:title="@string/navigation_view_item_2" />

        <item
            android:id="@+id/traffic"
            android:icon="@drawable/ic_traffic_black_24dp"
            android:title="@string/navigation_view_item_3" />

    </group>

    ...

</menu>

我的NavigationItemSelectedListener代码:

navigation.setNavigationItemSelectedListener { menuItem ->
        drawerLayout.closeDrawers()
        when (menuItem.itemId) {
            R.id.night -> if (menuItem.isChecked) {
                menuItem.isChecked = false
                ...
            } else {
                menuItem.isChecked = true
                ...
            }
            R.id.nearbyParkingPlaces -> if (menuItem.isChecked) {
                menuItem.isChecked = false
                ...
            } else {
                menuItem.isChecked = true
                ...
            }
            R.id.traffic -> if (menuItem.isChecked) {
                menuItem.isChecked = false
                ...
            } else {
                menuItem.isChecked = true
                ...
            }
            ...
        }
        false
    }

我做错了什么或错过了什么?

如果在android:checkableBehavior="all"中添加<group> - 所选项目具有灰色背景,但所选元素未合并。之前选择的项目已重置...我不明白,为什么以及如何修复它?

找到解决方案

1 个答案:

答案 0 :(得分:0)

使用选择器作为菜单背景

app:itemBackground="@drawable/activated_background.xml"

你的选择器drawable就像

<selector xmlns:android="http://schemas.android.com/apk/res/android">

            <item android:state_checked="false" android:drawable="@drawable/normal"/>

            <item android:state_checked="true"  android:drawable="@drawable/selected" />

</selector>