2016-03-29 3 views
0

私はナビゲーションビュー内のアイテムの残りの部分とは別の色をつけようとしています。したがって、私は全体のナビゲーションドレープを白にしたいのですが、ナビゲーションドレッダーでネストされているサブメニュー全体をグレーにします。私は標準のアンドロイドスタジオナビゲーションドロワーを使用しています。ナビゲーションビューでサブメニューにカスタム背景色を付けるにはどうすればよいですか?

マイコード:

<group android:id="@+id/firstgroup"> 
    <item 
     android:id="@+id/nav_kalender" 
     android:icon="@drawable/ic_menu_kalender" 
     android:title="@string/str_menu_kalender" /> 
    <item android:title="@string/str_menu_title_klassement"> 
     <menu> 
      <item 
       android:id="@+id/nav_indklassement" 
       android:icon="@mipmap/ic_menu_indklassement" 
       android:title="@string/str_menu_indklassement" /> 
      <item 
       android:id="@+id/nav_clubklassement" 
       android:icon="@drawable/ic_menu_clubklassement" 
       android:title="@string/str_menu_clubklassement" /> 
      <item 
       android:id="@+id/nav_nietverwerkteritten" 
       android:icon="@drawable/ic_menu_nietverwerkteritten" 
       android:title="@string/str_menu_nietverwerkteritten" /> 
      <item 
       android:id="@+id/nav_reglement" 
       android:icon="@drawable/ic_menu_reglement" 
       android:title="@string/str_menu_reglement" /> 
      <item 
       android:id="@+id/nav_prijzen" 
       android:icon="@drawable/ic_menu_prijzen" 
       android:title="@string/str_menu_prijzen" /> 
     </menu> 
    </item> 
</group> 

あなたは以下の例を見れば、ライン間のすべてがライトグレーの背景色、このような

enter image description here

+0

の可能性のある重複した[ナビゲーションビューに添付サブメニューのテキストとアイコンの色を変更する方法?](http://stackoverflow.com/questions/32994329/how-to-changeサブタイトルのテキストとアイコンのナビゲーションメニューに表示されます) –

答えて

0
NavigationMenuView navigationMenuView = (NavigationMenuView)navigationView.getChildAt(0); 

NavigationMenuViewあなたはItemDecorationとして仕切りを追加することができます。だからRecyclerviewの延長ですが、分周器は、それ以外の場合は、すべての要素に追加されます追加する必要がある位置をチェックしなければなりません。

別のアプローチは、あなたの代わりにこのようなnavigationdrawerでメニューを使用してのリストビューを使用することができる代わりに、単一のグループ

+0

あなたはどのようにグループにカスタム背景を与えるでしょうか? –

+0

あなたはアイテム装飾の 'OnDraw'メソッドをオーバーライドすることができますが、異なる色を使いたい場合はインデックスごとに別々に行う必要があります。これはもっと良い解決策になると思います。 –

0

を持つ必要があります。

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<group> 
    <item 
     android:id="@+id/nav_home" 
     android:checkable="true" 
     android:icon="@drawable/ic_dashboard" 
     android:title="Home"/> 
    <item 
     android:id="@+id/nav_messages" 
     android:checkable="true" 
     android:icon="@drawable/ic_event" 
     android:title="Messages"/> 
    <item 
     android:id="@+id/nav_friends" 
     android:checkable="true" 
     android:icon="@drawable/ic_headset" 
     android:title="Friends"/> 
    <item 
     android:id="@+id/nav_discussion" 
     android:checkable="true" 
     android:icon="@drawable/ic_forum" 
     android:title="Discussion"/> 
</group> 

<item android:title="Sub items"> 
    <menu> 
     <item 
      android:checkable="true" 
      android:icon="@drawable/ic_dashboard" 
      android:title="Sub item 1"/> 
     <item 
      android:checkable="true" 
      android:icon="@drawable/ic_forum" 
      android:title="Sub item 2"/> 
    </menu> 
</item> 

</menu> 
+0

これは私の質問に対する答えではありません。 –

0

の複数のグループを使用することです。そのため、XMLファイル内の任意の色をアダプターで膨らませることができます。

<android.support.v4.widget.DrawerLayout 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" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

<include 
    layout="@layout/app_bar_main2" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<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"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <include layout="@layout/nav_header_main2"/> 
     <ListView 
      android:id="@+id/lst_menu_items" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:divider="@null" 
      android:dividerHeight="0dp"/> 
     </LinearLayout> 
    <!--app:headerLayout="@layout/nav_header_main2" 
    app:menu="@menu/activity_main2_drawer" >--> 
    </android.support.design.widget.NavigationView> 

関連する問題