安卓设计支持库 Navigation-view 自定义

4

我有一些关于新导航视图的问题。

1) 滚动导航视图会滚动整个视图,但是我只想让标题保持在原位,而导航项可以滚动。

enter image description here

2) 要实现导航项之间的分隔线,我可以像这样做:

<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>

但是如果没有子标题,它就无法正常工作。我尝试了给它一个空字符串,但这只会留下一个垂直的空白空间,而不是子标题。我需要将导航项组分隔开,但没有子标题。

3) 动态操作导航项。在此之前,我使用垂直列表视图作为导航项。我只需将我不想要的导航项的可见性设置为gone。如何动态更改导航项?


创建你自己的视图,在线性布局和ListView底部,该视图只能通过滚动来浏览。 - Harin
我曾经使用那个,但既然这个已经过时了,我在想是否有可能在NavigationView中实现。 - iitum studant
很遗憾,无法实现您想要的功能。因为NavigationView不会提供太多灵活性.. - Moinkhan
但是你可以解决这个问题...只需包含标题布局,下面是listview,这两个应该嵌套在NavigationView中。 - Moinkhan
2个回答

5

1) 滚动导航视图会滚动整个视图,但我只想要标题停在原地而导航项滚动。

您不能通过当前的 NavigationView 实现此效果。它遵循 Material 设计指南。如果您需要这种模式,您必须使用自定义视图。

2) 要在导航项之间实现分隔线,我可以像这样做:

您可以使用标准的 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) 动态操作导航条目

您可以使用类似以下的代码:

navigationview.getMenu().findItem(R.id.drawer_item_xxx).setVisible(xxx);

谢谢!它有效了。我之前尝试过使用组,但没想到会需要。再次感谢 :) - iitum studant

0

1) 滚动导航视图会滚动整个视图,但我只想让标题保持在原位,而导航项则可以滚动。

由于NavigationView是FrameLayout,我们可以将ListView作为其子项添加,并不要忘记删除NavigationView中的app:menu属性,然后您就可以获得所需的行为了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接