25

Ich versuche NavigationView zu verwenden, um NavigationDrawer zu implementieren. Ich habe das Trennzeichen hinzugefügt, indem ich Gruppen-ID im Menü gesetzt habe. Allerdings kann ich das Trennzeichen nicht sehen. Ich schätze, das liegt daran, dass die Farbe des Separators gleich dem Hintergrund ist. Also ich möchte die Trennfarbe ändern. Aber ich finde keine Möglichkeit, es zu ändern. Kann mir jemand helfen?Wie kann ich die Separatorfarbe in NavigationView ändern?

In Screenshot scheint es einen Raum für Trennzeichen zwischen History und Settings zu haben, 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> 

Antwort

67

nur gelten folgende Zeile auf style.xml

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

Die unten sind nur Informationen für Ihr Wissen ... Wenn Sie Design Support-Bibliothek gesehen haben .. sie sind mit folgendem Layout für NavigationView seprator ..

<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, Sie android sehen: Hintergrund = "android: attr/listDivider" .. so genießen ... und hier ist meine Ausgabe, die ich die Farbe ändern enter image description here

+0

Jeder Weg, es programmatisch zu tun? – ElYeante

+0

@ElYeante Nein leider gibt es keine Möglichkeit, es programmatisch zu machen ... vielleicht wird es in Zukunft eine Bibliothek geben .. – Moinkhan

+1

Funktioniert super! Danke – Vinayak

1

yas Sie leere Header als Trennzeichen hinzufügen müssen holo_blue.

wie

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

original answer

+0

was ich in Teiler hinzufügen @RBK –

21

Hier beste und einfache Weise ist bei der Verwendung von Menü als Ansicht

<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

+0

Was ist die ThemeToolbar.? – anivaler

+0

Es ist ein beliebiger Name des App-Themas, hier wird es nur zur assoziierten NavigationView mit ThemeToolbar so wie ThemeToolbar.NavigationView geschrieben hinzugefügt. NavigationView kann als sich selbst geschrieben werden. –

+2

diese Lösung funktioniert !! –

1

Perfeita Resposta

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

Ich versuchte, aber es funktioniert nicht @George Freire –

1
<!-- 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 sich die Farbe des Headers.

Verwandte Themen