我正在尝试更改活动主抽屉的文字颜色,但我无法找到更改它的位置。我想把它改成浅色(白色)
这是我的activity_main_drawer.xml
中的内容amol@amol-HP-Pavilion-15-Notebook-PC ~/Desktop/C codes $ ./a.out
Enter Number 1
Enter Number 2
Enter Number 3
<?xml version="1.0" encoding="utf-8"?>
我尝试在任何地方插入android:textColor,但它无效。
<group android:checkableBehavior="single">
<item android:id="@+id/nav_city1" android:icon="@android:drawable/ic_menu_mapmode"
android:title="Label1" />
<item android:id="@+id/nav_city2" android:icon="@android:drawable/ic_menu_compass"
android:title="Label2" />
<item android:id="@+id/nav_city3" android:icon="@android:drawable/ic_menu_myplaces"
android:title="Label3" />
<item android:id="@+id/nav_city4" android:icon="@android:drawable/ic_input_get"
android:title="Label4" />
</group>
<item android:title="Account">
<menu>
<item android:id="@+id/nav_profile" android:icon="@android:drawable/ic_menu_edit"
android:title="Profile" />
<item android:id="@+id/nav_settings" android:icon="@android:drawable/ic_menu_manage"
android:title="Settings" />
</menu>
</item>
答案 0 :(得分:2)
您需要使用
初始化要使用的颜色
ColorStateList对象。
设置每个州的颜色后,您可以设置navitaionView itemTextColor(navigation.setItemTextColor(yourCustomColorStateList);
This is where I got the answer
Here is another related Stackoverflow questions
Official Android documentation of all the available kind of state
例如: 在主类的onCreate方法中使用它
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
/**
* start of code configuration for color of text of your Navigation Drawer / Menu based on state
*/
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 colorStateList1 = 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 colorStateList2 = new ColorStateList(states, colors);
navigationView.setItemTextColor(colorStateList1);
navigationView.setItemIconTintList(colorStateList2);
/**
* end of code configuration for color of text of your Navigation Drawer / Menu based on state
*/
答案 1 :(得分:2)
只需在NavigationView中使用app:itemTextColor
即可通过xml实现相同的目标:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_height="match_parent"
android:layout_width="240dp"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:background="@color/colorWhite"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer_view"
app:itemTextColor="@color/colorWhite">
将上述单行添加到xml中应该适用于您的情况 希望它有所帮助!
答案 2 :(得分:0)
您似乎使用了新的Android Support Design Library
。我没用过它。
我觉得您需要有一些页眉布局,其中包含TextView
,如上面的屏幕截图所示。
稍后在Java代码中,您可以访问标题布局并使用findViewById()
获取TextView
。
让我知道它是否有效。
答案 3 :(得分:0)
您可以在您的NavigationVi ew中使用 app:itemTextColor
<?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:background="#FFDFE3"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
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"
<!-- here you can change color of items like this. -->
app:itemTextColor="@color/colorHeaderBackground"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
&#13;