wake-up-neo.com

Wie kann ich die Trennfarbe in NavigationView ändern?

Ich versuche, NavigationView zum Implementieren von NavigationDrawer zu verwenden. Ich habe das Trennzeichen hinzugefügt, indem ich die Gruppen-ID im Menü eingestellt habe. Ich kann jedoch das Trennzeichen nicht sehen. Ich vermute, es liegt daran, dass die Trennfarbe dieselbe ist wie der Hintergrund. Ich möchte also die Trennfarbe ändern. Aber ich finde keine Möglichkeit, es zu ändern. Kann mir jemand helfen?

Im Screenshot scheint es einen Raum für die Trennung zwischen History und Settings zu geben, aber Sie können es nicht sehen.

enter image description here

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/drawer_layout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    Android:fitsSystemWindows="true"
    tools:context=".ui.MapActivity">

    <LinearLayout
        Android:id="@+id/main_content"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

        <include layout="@layout/toolbar_actionbar" />

        <!--main content-->
    </LinearLayout>

    <Android.support.design.widget.NavigationView
        Android:layout_width="wrap_content"
        Android:layout_height="match_parent"
        Android:layout_gravity="start"
        Android:background="@color/navdrawer_background"
        app:insetForeground="#4000"
        app:itemTextColor="@color/navdrawer_item_text_color"
        app:itemIconTint="@color/navdrawer_item_icon_tint"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/drawer"/>
</Android.support.v4.widget.DrawerLayout>

drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <group Android:id="@+id/group_feature"
        Android:checkableBehavior="single">
        <item Android:id="@+id/navdrawer_item_map"
            Android:checked="true"
            Android:icon="@drawable/ic_drawer_map"
            Android:title="@string/navdrawer_item_map"/>
        <item Android:id="@+id/navdrawer_item_favourite"
            Android:icon="@drawable/ic_drawer_fav"
            Android:title="@string/navdrawer_item_fav"/>
        <item Android:id="@+id/navdrawer_item_history"
            Android:icon="@drawable/ic_drawer_history"
            Android:title="@string/navdrawer_item_history"/>
    </group>
    <group Android:id="@+id/group_settings"
        Android:checkableBehavior="single">
        <item Android:id="@+id/navdrawer_item_settings"
            Android:icon="@drawable/ic_drawer_settings"
            Android:title="@string/navdrawer_item_settings"/>
        <item Android:id="@+id/navdrawer_item_help"
            Android:icon="@drawable/ic_drawer_help"
            Android:title="@string/navdrawer_item_help"/>
        <item Android:id="@+id/navdrawer_item_about"
            Android:icon="@drawable/ic_drawer_about"
            Android:title="@string/navdrawer_item_about"/>
    </group>
</menu>
36
PageNotFound

wenden Sie einfach die folgende Zeile in style.xml an

<item name="Android:listDivider">your_color</item>

Im Folgenden finden Sie nur Informationen zu Ihrem Wissen ... Wenn Sie eine Bibliothek zur Entwurfsunterstützung gesehen haben, verwenden sie das folgende Layout für den NavigationView-Separator.

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
             Android:layout_width="match_parent"
             Android:layout_height="wrap_content">

    <View Android:layout_width="match_parent"
          Android:layout_height="1dp"
          Android:background="?android:attr/listDivider"/>

</FrameLayout>

hier können Sie sehen Android: background = "android: attr/listDivider" .. Also viel Spaß ... Und hier ist meine Ausgabe, dass ich die Farbe in holo_blue enter image description here

88
Moinkhan

Hier ist der beste und einfachste Weg, wenn Sie das Menü als Ansicht verwenden

<Android.support.design.widget.NavigationView
    Android:id="@+id/nav_view"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:layout_gravity="start"
    Android:fitsSystemWindows="true"
    Android:theme="@style/ThemeToolbar.NavigationView"
    app:itemTextColor="@color/white"
    app:itemIconTint="@color/white"
    app:headerLayout="@layout/activity_home_nav_header"
    app:menu="@menu/activity_home_drawer" />

ThemeToolbar.NavigatinoView

 <style name="ThemeToolbar.NavigationView" >
    <item name="Android:listDivider">@color/white</item>
    <item name="Android:textColorSecondary">@color/white</item>
</style>

 enter image description here

31
turbandroid

Erstellen Sie einen Stil in Ihrer styles.xml. Geben Sie Ihre bevorzugte Farbe im Android: listDivider ein 

<style name="NavigationView"  parent="Base.Theme.AppCompat">
    <item name="Android:listDivider">@color/text_lightgray</item>
</style>

Referenzieren Sie den Stil als Thema Ihrer Navigationsansicht:

   <Android.support.design.widget.NavigationView
    Android:id="@+id/nav_view"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:layout_gravity="start"
    Android:fitsSystemWindows="false"
    Android:theme="@style/NavigationView"
    app:headerLayout="@layout/nav_header"
    app:menu="@menu/drawer_view"
    app:itemTextColor="@color/text_white"/>

Vergewissern Sie sich schließlich, dass die Gruppen in Ihrem Menü eindeutige IDs haben. Wenn Ihre Gruppen nicht das id-Attribut haben, funktioniert dies nicht!

<group Android:checkableBehavior="single"
    Android:id="@+id/group1">
    <item
        Android:id="@+id/item1"
        Android:title="@string/item1" />
</group>
<group Android:checkableBehavior="single"
    Android:id="@+id/group2">

    <item
        Android:id="@+id/item2"
        Android:title="@string/item2" />

</group>
4
mabc21

sie müssen eine leere Kopfzeile als Trennzeichen hinzufügen.

mögen

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

ursprüngliche Antwort

1
RBK
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="Android:textColorPrimary">@color/menu_text_color</item>
    <item name="Android:textColorSecondary">@color/menu_text_color</item>
</style>

textColorPrimary ändert die Farbe der Kopfzeile.

1
Alp Altunel

Perfekte Antwort:

 enter image description here

<Android.support.design.widget.NavigationView
    Android:id="@+id/activity_principal_nav_view"
    Android:layout_width="@dimen/size_230"
    Android:layout_height="match_parent"
    Android:layout_gravity="start"
    Android:background="@color/black"
    Android:fitsSystemWindows="true"
    app:insetForeground="@color/white"
    app:menu="@menu/settings_menu"
    app:itemTextColor="@color/white"
    app:itemIconTint="@color/white"
    app:headerLayout="@layout/settings_menu_header"
    Android:theme="@style/NavigationDrawerStyle"/>
0
George Freire