【问题标题】:NavigationView: how to insert divider without subgroup?NavigationView:如何在没有子组的情况下插入分隔符?
【发布时间】:2015-06-02 19:48:04
【问题描述】:

如何在新的 NavigationView 中放置一个没有标题子组的分隔符?

<?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/drawer_armario"
        android:icon="@drawable/armario"
        android:title="@string/armario"  />
    <item
        android:id="@+id/drawer_amigos"
        android:icon="@drawable/amigos"
        android:title="@string/amigos" />

</group>

<item android:title="Configuración">
    <menu>
        <item

            android:id="@+id/drawer_ajustes"
            android:icon="@drawable/ajustes"
            android:title="@string/ajustes" />
        <item
            android:id="@+id/drawer_ayuda"
            android:icon="@drawable/ayuda"
            android:title="@string/ayuda" />
        <item
            android:id="@+id/drawer_sign_out"
            android:icon="@drawable/sign_out"
            android:title="@string/sign_out" />

    </menu>

</item>

我想在没有配置标题的朋友和调整项目之间添加一行。

谢谢!!!

【问题讨论】:

  • 使用 Jin 的答案。它有效。

标签: android android-support-library divider navigationview android-navigationview


【解决方案1】:

您需要做的就是定义一个具有唯一 ID 的 group。我查看了NavigationView的实现,每次更改组ID时都会创建一个分隔符。

例如

<group android:id="@+id/my_id">
    <!-- Divider will appear above this item -->
    <item ... />
</group>

【讨论】:

  • 哦,我要试试这个!我希望它有效,因为这一直困扰着我。我会测试它并报告!
  • 设置&lt;dimen name="navigation_separator_vertical_padding"&gt;0dp&lt;/dimen&gt; 以在执行此操作时删除填充,除非您希望每个组都有填充。
  • @DanBrough 您如何使用菜单项中的垂直指定?通过定义 0dp
  • @DanBrough 如何帮助删除分隔线的填充。 :\你能评论你的评论吗?
  • 它现在称为“design_navigation_separator_vertical_padding”。在这里阅读:stackoverflow.com/questions/30584554/…
【解决方案2】:

我试过了,效果很好

See implementation from line no 122-125

这是我的菜单文件,它正在创建分隔符:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MyFirstMNCActivity">
    <group android:id="@+id/grp1">
        <item
            android:id="@+id/navigation_item_1"
            android:checked="true"
            android:icon="@drawable/ic_home"
            android:title="@string/navigation_item_1" />

    </group>

    <group android:id="@+id/grp2">

        <item
            android:id="@+id/navigation_item_2"
            android:icon="@drawable/ic_home"
            android:title="@string/navigation_item_2" />
    </group>
</menu>

【讨论】:

    【解决方案3】:
    NavigationView navigationView = (NavigationView) findViewById(R.id.navigation);
    NavigationMenuView navMenuView = (NavigationMenuView) navigationView.getChildAt(0);
    navMenuView.addItemDecoration(new DividerItemDecoration(appContext,DividerItemDecoration.VERTICAL_LIST));
    

    这里是 DividerItemDecoration 的要点

    DividerItemDecoration.java

    【讨论】:

    • 我可以将addItemDecoration线的高度改为1px吗?
    • 是的,你可以在 DividerItemDecoration 中更新它。我猜它已经是 1px 了。如果不更新为 1px;
    • 怎么样?有什么方法可以做到吗? addItemDecoration 不接受任何决定线条大小的参数
    【解决方案4】:

    使用 xml

    <android.support.design.widget.NavigationView
    ...
    app:itemIconTint="@android:color/black" 
    ... />
    

    以编程方式

     yourNavigationView.setItemIconTintList(null);
    

    我觉得这个答案很好。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多