Android 设计支持库 Navigation-view 自定义
Android Design Support Library Navigation-view Customization
我有几个关于新导航视图的问题。
1) 滚动导航视图会滚动整个视图,但我只想让 header 留在原处,让导航项滚动。
2) 要实现分隔符 b/w 导航项,我可以这样做:
<item
android:id="@+id/navigation_subheader"
android:title="@string/navigation_subheader">
<menu>
<item
android:id="@+id/navigation_sub_item_1"
android:icon="@drawable/ic_android"
android:title="@string/navigation_sub_item_1"/>
<item
android:id="@+id/navigation_sub_item_2"
android:icon="@drawable/ic_android"
android:title="@string/navigation_sub_item_2"/>
</menu>
</item>
但是没有subheader就不行了。我试图给它一个空白字符串,但只留下一个垂直空白 space 而不是 subheader。我需要由分隔符分隔但没有 subheaders.
的导航项组
3) 动态操作导航项。在此之前,我曾经使用垂直列表视图作为导航项。我只是将可见性设置为我不想要的任何导航项的可见性。如何动态更改导航项?
1) Scrolling the navigation view scrolls the whole view but I just want the >header to stay at it's place and the navigation item to scroll.
当前NavigationView
无法获取。它遵循 Material 准则。如果您想要这种模式,您必须使用自定义视图。
2) To implement dividers b/w navigation items, I can do something like this:
您可以使用标准 NavigationView
定义如下菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/group1" android:checkableBehavior="single" id>
//items of group1
</group>
<group android:id="@+id/group2" android:checkableBehavior="single" id>
//items of group2
</group>
</menu>
给每个组一个唯一的 ID 很重要。
3) Manipulating the navigation items dynamically
您可以使用类似的东西:
navigationview.getMenu().findItem(R.id.drawer_item_xxx).setVisible(xxx);
1) 滚动导航视图会滚动整个视图,但我只想让 >header 留在原处,让导航项滚动。
由于 NavigationView 是一个 FrameLayout,我们可以添加一个 ListView 作为子视图,并且不要忘记删除 NavigationView 中的 app:menu 属性,然后您将获得所需的行为。
我有几个关于新导航视图的问题。
1) 滚动导航视图会滚动整个视图,但我只想让 header 留在原处,让导航项滚动。
2) 要实现分隔符 b/w 导航项,我可以这样做:
<item
android:id="@+id/navigation_subheader"
android:title="@string/navigation_subheader">
<menu>
<item
android:id="@+id/navigation_sub_item_1"
android:icon="@drawable/ic_android"
android:title="@string/navigation_sub_item_1"/>
<item
android:id="@+id/navigation_sub_item_2"
android:icon="@drawable/ic_android"
android:title="@string/navigation_sub_item_2"/>
</menu>
</item>
但是没有subheader就不行了。我试图给它一个空白字符串,但只留下一个垂直空白 space 而不是 subheader。我需要由分隔符分隔但没有 subheaders.
的导航项组3) 动态操作导航项。在此之前,我曾经使用垂直列表视图作为导航项。我只是将可见性设置为我不想要的任何导航项的可见性。如何动态更改导航项?
1) Scrolling the navigation view scrolls the whole view but I just want the >header to stay at it's place and the navigation item to scroll.
当前NavigationView
无法获取。它遵循 Material 准则。如果您想要这种模式,您必须使用自定义视图。
2) To implement dividers b/w navigation items, I can do something like this:
您可以使用标准 NavigationView
定义如下菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/group1" android:checkableBehavior="single" id>
//items of group1
</group>
<group android:id="@+id/group2" android:checkableBehavior="single" id>
//items of group2
</group>
</menu>
给每个组一个唯一的 ID 很重要。
3) Manipulating the navigation items dynamically
您可以使用类似的东西:
navigationview.getMenu().findItem(R.id.drawer_item_xxx).setVisible(xxx);
1) 滚动导航视图会滚动整个视图,但我只想让 >header 留在原处,让导航项滚动。
由于 NavigationView 是一个 FrameLayout,我们可以添加一个 ListView 作为子视图,并且不要忘记删除 NavigationView 中的 app:menu 属性,然后您将获得所需的行为。