【问题标题】:Multiple checkable groups in NavigationDrawer stopped working after upgrading support design library升级支持设计库后,导航抽屉中的多个复选框组停止工作
【发布时间】:2015-11-05 17:59:09
【问题描述】:

我正在使用 NavigationView 将 menu.xml 数据显示到我的 NavigationDrawer。它有两组可检查项目。第一组可以同时检查任意数量的项目,第二组可以只检查一个。

使用的支持库版本:

compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:design:22.2.0'

用于 NavigationView 的 xml 代码

<?xml version="1.0" encoding="utf-8"?>    
<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:checkableBehavior="all" android:id="@+id/navgroup_layers" android:menuCategory="container">
    <item
        android:id="@+id/nav_traffic"
        android:checked="true"
        android:icon="@drawable/ic_traffic_light"
        android:title="@string/Traffic"/>
    <item
        android:id="@+id/nav_text"
        android:checked="true"
        android:icon="@drawable/ic_tooltip_text"
        android:title="@string/text_labels"/>
</group>

<group android:id="@+id/navgroup_cities"
       android:checkableBehavior="single"
       android:menuCategory="container"
    >
    <item
        android:id="@+id/nav_berlin"
        android:checked="true"
        android:icon="@drawable/ic_traffic_light"
        android:title="@string/berlin"/>
    <item
    android:id="@+id/nav_prague"
    android:icon="@drawable/ic_subway"
    android:checked="false"
    android:title="@string/prague"/>
    <item
        android:id="@+id/nav_paris"
        android:checked="false"
        android:icon="@drawable/ic_tooltip_text"
        android:title="@string/paris"/>
</group>

在我将库升级到最新之后:

compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0'

可检查的行为发生了变化。现在,当我多次单击同一个项目时,它会检查和取消选中自身,但是当我选择不同的项目时,一切都会被取消选中,只有在再次单击同一个项目后,它才会被选中。 看了两个版本的源码后,没意识到问题出在哪里。看起来有点像这个可破解的行为属性在新版本中根本没有考虑。 lib 的错误或整个实现应该突然不同地完成?

【问题讨论】:

    标签: android navigationview android-support-design navigation-drawer


    【解决方案1】:

    NavigationView 的第 23 版确实完全改变了菜单构建方式的结构 - 它现在基于 RecyclerView,如 release Google+ post 的 cmets 中所述。

    NavigationMenuPresenter's Adapter source code(控制菜单项的显示和存储方式)来看,似乎只保存了一个选中的项目,选中一个项目并取消选中其他选中的项目。

    这需要提交new bug report 以获取NavigationView 以考虑checkableBehavior 字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 2018-07-01
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多