不同的群体中选择抽屉式导航栏菜单项菜单项、群体、不同、抽屉式

2023-09-07 15:07:59 作者:只谈情不闲聊

我有一个工作抽屉式导航和具有若干问题menuItem.setChecked(真);使用菜单中的组和头时。它不突出菜单项,如预期。

I have a working Navigation Drawer and having some issues with menuItem.setChecked(true); when using groups and headers within the menu. It's not highlighting menu items as expected.

下面是我的XML:

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

    <group android:checkableBehavior="single">


        <item
            android:id="@+id/nav_welcome"
            android:icon="@drawable/abc_btn_check_to_on_mtrl_000"
            android:title="Welcome" />
        <item
            android:id="@+id/nav_map_showmap"
            android:icon="@mipmap/ic_map_black_24dp"
            android:title="Show Map" />
        <item
            android:icon="@mipmap/ic_list_black_24dp"
            android:title="Show List" />

        <item android:title="Settings">
            <menu>

                <item
                    android:id="@+id/nav_database_check"
                    android:icon="@mipmap/ic_cloud_done_black_24dp"
                    android:title="Update Database" />
                <item
                    android:id="@+id/nav_map_settings"
                    android:icon="@mipmap/ic_settings_black_24dp"
                    android:title="App Preferences" />

            </menu>
        </item>


        <item android:title="General">
            <menu>

                <item
                    android:id="@+id/nav_general_about"
                    android:icon="@mipmap/ic_info_black_24dp"
                    android:title="About" />
                <item
                    android:id="@+id/nav_general_help"
                    android:icon="@mipmap/ic_help_black_24dp"
                    android:title="Help" />
                <item
                    android:id="@+id/nav_general_report"
                    android:icon="@mipmap/ic_email_black_24dp"
                    android:title="Feedback / Report error" />
            </menu>
        </item>
    </group>
</menu>

正如你可以看到我有3个菜单项,然后设置集团2菜单项,然后是通用集团3的菜单项。

As you can see I have 3 menu items, then a Settings Group with 2 menu items, then a General Group with 3 menu items.

现在与第3的菜单项,在 menuItem.setChecked(真); 按预期工作,并强调该菜单项。但是,没有一个子集内的下列菜单项(设置或常规子集)都强调正确。

Now with the first 3 menu items, the menuItem.setChecked(true); is working as expected, and highlighting that menu item. However, none of the following menu items within the subset ("Settings" or "General" subsets) are highlighting correctly.

我读了&LT;组机器人:checkableBehaviour =单一&GT; 可以封装整个块,但似乎并不奏效

I read that the <group android:checkableBehaviour="single"> can encapsulate the whole block, but that doesn't seem to be working.

有什么想法?干杯。

修改 - 菜单结构中添加了屏幕截图

EDIT - Added Screenshot of the menu structure

推荐答案

如果您已升级的Andr​​oid Studio中的 1.4 ,您可以创建一个新的项目(与抽屉式导航活动模板)。然后,您可以更新菜单文件如下(注意两行&LT;组机器人:checkableBehavior =单一&GT; 内2子菜单在沟通的和的BNK的):

UPDATE

If you have upgraded your Android Studio to 1.4, you can create a new project (with Navigation Drawer Activity template). Then, you can update your menu file as the following (pay attention to the two lines <group android:checkableBehavior="single"> inside 2 sub-menus at "Communicate" and "BNK"):

<?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/nav_camara" android:icon="@android:drawable/ic_menu_camera"
            android:title="Import" />
        <item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery"
            android:title="Gallery" />
        <item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow"
            android:title="Slideshow" />
        <item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage"
            android:title="Tools" />
    </group>

    <item android:title="Communicate">
        <menu>
            <group android:checkableBehavior="single">
                <item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share"
                android:title="Share" />
                <item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send"
                android:title="Send" />
            </group>
        </menu>
    </item>

    <item android:title="BNK">
        <menu>
            <group android:checkableBehavior="single">
                <item android:id="@+id/nav_share_bnk" android:icon="@android:drawable/ic_menu_share"
                    android:title="Share BNK" />
                <item android:id="@+id/nav_send_bnk" android:icon="@android:drawable/ic_menu_send"
                    android:title="Send BNK" />
            </group>
        </menu>
    </item>
</menu>

这里是截图

正如我所评论的,请尽量把&LT;组机器人:checkableBehavior =单一&GT; 下面而不是把下面的外菜单设置和常规的菜单。这意味着你将有2组。希望这有助于!

As I have commented, please try putting <group android:checkableBehavior="single"> below menus of Settings and General instead of putting below the outside menu. That means you will have 2 groups. Hope this helps!