导航抽屉项目仍然是选定的Android

The*_*Bat 10 android android-menu android-activity navigation-drawer

我的导航抽屉一直显示最后选择的项目.有没有办法删除它.我想如果用户在主页,导航抽屉项目应该不突出显示.

我试过了

drawer.setSelected(false);
Run Code Online (Sandbox Code Playgroud)

在onResume()中.但它没有帮助.

请参考随附的截图,这将有助于理解.

即使我从

oiy*_*yio 20

除上述解决方案外,如果drawer_view.xml文件中的group元素包含以下属性,

android:checkableBehavior="single"
Run Code Online (Sandbox Code Playgroud)

如下例所示:

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

    <group android:checkableBehavior="single" > 
        <item
            ... />
        <item
          ... />
    </group>
</menu>
Run Code Online (Sandbox Code Playgroud)

以上解决方案均无效.因此,如果您不想要该突出显示功能,请确保不使用该属性.

  • 好吧……开发人员在使用它们之前应该先了解这些属性。最好用`android:checkableBehavior =“ none”`将“设置”,“费率应用”,“共享应用”之类的组包装在一起。其他项(例如,用于选择片段)应与android:checkableBehavior =“ single”组在一起。因此,对应该选择的项目使用“单一”,对不应该选择的项目使用“无” (2认同)

Zak*_*kir 8

我用

@Override
protected void onResume() {
    super.onResume();
    for (int i = 0; i < navigationView.getMenu().size(); i++) {
        navigationView.getMenu().getItem(i).setChecked(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果不起作用,还要添加:

itemOfMenu.setChecked(false);

onNavigationItemSelected覆盖结束.


Chi*_*ora 6

使用下面的代码:

navigationView.getMenu().getItem(0).setChecked(false);
Run Code Online (Sandbox Code Playgroud)

调用后调用此方法 setNavDrawer();

getItem(int index)方法得到的MenuItem,那么你可以调用setChecked(true);MenuItem,你剩下要做的一切都是为了找出哪些元素索引是否有预设,以及与指数代替0。

您可以通过调用来选择(突出显示)该项目:

onNavigationItemSelected(navigationView.getMenu().getItem(0));
Run Code Online (Sandbox Code Playgroud)

注意:对于 nexus 4,支持库版本 24.0.0。我推荐使用navigationView.setCheckedItem(id);

  • 最好用 `android:checkableBehavior="none"` 将设置项包装在组中。其他人应该与 `android:checkableBehavior="single"` 组 (4认同)