2017-02-11 76 views
0

我试着改变导航视图的文本颜色和图标着色颜色如下,无法更改的项目文本颜色和项目图标的色调

<?xml version="1.0" encoding="utf-8"?> 

<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/include_list_viewpager"/> 


     <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:background="@color/colorPrimary" 
      android:fitsSystemWindows="true" 
      android:minHeight="?attr/actionBarSize" 
      app:itemIconTint="@android:color/white" 
      android:theme="@style/AppTheme.NavigationView" 
      app:itemTextAppearance="?android:attr/textAppearanceSmall" 
      app:itemTextColor="@android:color/white" 
      app:menu="@menu/drawer_view"/> 

    </android.support.v4.widget.DrawerLayout> 

但是,这并不让我改变color..So我试图以编程方式设置的颜色如下,

// FOR NAVIGATION VIEW ITEM TEXT COLOR 
     int[][] state = new int[][]{ 
       new int[]{-android.R.attr.state_enabled}, // disabled 
       new int[]{android.R.attr.state_enabled}, // enabled 
       new int[]{-android.R.attr.state_checked}, // unchecked 
       new int[]{android.R.attr.state_pressed} // pressed 

     }; 

     int[] color = new int[]{ 
       Color.WHITE, 
       Color.WHITE, 
       Color.WHITE, 
       Color.WHITE 
     }; 

     ColorStateList csl = new ColorStateList(state, color); 


// FOR NAVIGATION VIEW ITEM ICON COLOR 
     int[][] states = new int[][]{ 
       new int[]{-android.R.attr.state_enabled}, // disabled 
       new int[]{android.R.attr.state_enabled}, // enabled 
       new int[]{-android.R.attr.state_checked}, // unchecked 
       new int[]{android.R.attr.state_pressed} // pressed 

     }; 

     int[] colors = new int[]{ 
       Color.WHITE, 
       Color.WHITE, 
       Color.WHITE, 
       Color.WHITE 
     }; 

     ColorStateList csl2 = new ColorStateList(states, colors); 

     navigationView.setItemTextColor(csl); 
     navigationView.setItemIconTintList(csl2); 

虽然我已经试过itemTextColor和itemIconTint设置为白色编程以及通过XML,它没有影响。它仍然是灰色的。我怎样才能解决这个问题?

UPDATE:

我已经ofcourse尝试设置以下主题navigationview

<style name="AppTheme.NavigationView"> 
     <item name="android:textColorPrimary">#FFFFFF</item> 
     <item name="android:textColorSecondary">#FFFFFF</item> 
    </style> 
+0

您可以使用自定义主题来改变文字颜色和导航视图的icontint – tahsinRupam

+0

我曾经试过它。我已经更新了同样的问题 –

回答

1

尝试使用自定义Color State绘制改变菜单项的文字和图标的颜色。

app:itemIconTint="@color/custom_text_color" //icon color 
app:itemTextColor="@color/custom_text_color" //text color 
app:itemBackground="@drawable/menu_background_color" //background 

RES /颜色/ custom_text_color.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/White" android:state_checked="true" /> 
    <item android:color="@color/Black" android:state_checked="false"/> 
</selector> 

而且在RES /绘制/ menu_background_color.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@android:color/transparent" android:state_checked="false"/> 
    <item android:drawable="@color/colorPrimary" android:state_checked="true"/> 
</selector> 
+0

尝试它...... –

+0

仍然没有影响... :( –

+0

是否programetically创建菜单项? – rafsanahmad007