NavigationView: как вставить разделитель без подгруппы?

Как я могу поместить разделитель без подгруппы заголовков в новый 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>

I would like to put a line beetween amigos and ajustes items without Configuración title.

Спасибо!!!


person Android-developer    schedule 02.06.2015    source источник
comment
Используйте ответ Джина. Оно работает.   -  person hungryghost    schedule 03.06.2015


Ответы (4)


Все, что вам нужно сделать, это определить group с уникальным идентификатором. Я просмотрел реализацию NavigationView, и она будет создавать разделитель каждый раз при изменении идентификатора группы.

e.g.

<group android:id="@+id/my_id">
    <!-- Divider will appear above this item -->
    <item ... />
</group>
person Jin    schedule 02.06.2015
comment
Оооо, это надо попробовать! Я надеюсь, что это сработает, потому что это беспокоило меня. Я проверю это и отчитаюсь!! - person hungryghost; 03.06.2015
comment
Установите <dimen name="navigation_separator_vertical_padding">0dp</dimen>, чтобы удалить отступы, когда вы делаете это, если вы не хотите, чтобы каждая группа имела отступы. - person Dan Brough; 10.07.2015
comment
@DanBrough, как вы используете вертикальное указание в пункте меню? путем определения ‹имя_размера=navigation_separator_vertical_padding›0dp‹/dimen› - person Atmaram; 29.03.2016
comment
@DanBrough, как это помогает удалить отступы разделителя. :\ вы можете просмотреть свой комментарий? - person Zahan Safallwa; 15.07.2016
comment
Теперь он называется design_navigation_separator_vertical_padding. Прочитайте об этом здесь: stackoverflow.com/questions/30584554/ - person Dan Brough; 16.07.2016

Я попробовал это, и это сработало

см. реализация из строки № 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>
person N J    schedule 04.06.2015

NavigationView navigationView = (NavigationView) findViewById(R.id.navigation);
NavigationMenuView navMenuView = (NavigationMenuView) navigationView.getChildAt(0);
navMenuView.addItemDecoration(new DividerItemDecoration(appContext,DividerItemDecoration.VERTICAL_LIST));

Вот суть DividerItemDecoration

DividerItemDecoration.java

person Ravi Theja    schedule 14.02.2016
comment
Могу ли я изменить высоту строки addItemDecoration на 1 пиксель? - person Prabs; 13.02.2017
comment
да, вы можете обновить его в DividerItemDecoration. Я думаю, это уже 1px. если не обновить его до 1px; - person Ravi Theja; 13.02.2017
comment
Как? Есть ли способ сделать это? addItemDecoration не принимает никаких параметров, определяющих размер строки - person Prabs; 14.02.2017

Использование xml

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

Программно

 yourNavigationView.setItemIconTintList(null);

Я чувствую, что это хороший ответ.

Удачи.

person Gundu Bandgar    schedule 08.01.2016