如何在 Android 中更改 Activity 主抽屉的文本颜色
How to Change the Text Color of Activity Main Drawer in Android
我正在尝试更改 Activity 主抽屉的文本颜色,但找不到更改位置。我想把它换成更浅的颜色(白色)
这是我的 activity_main_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<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>
我试过在任何地方插入 android:textColor 但它不起作用。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
android:textColor="#FFFFFF">
<group android:checkableBehavior="single" android:textColor="#FFFFFF">
<item android:id="@+id/nav_cities" android:icon="@android:drawable/ic_menu_mapmode"
android:title="Cities" android:textColor="#FFFFFF"/>
您似乎在使用新的 Android Support Design Library
。我没用过。
我觉得你需要一些 Header Layout,它由 TextView
组成,如上面的屏幕截图所示。
稍后在 Java 代码中,您可以访问页眉布局并使用 findViewById()
获取 TextView
s.
让我知道它是否有效。
您需要使用
初始化您想要使用的颜色
ColorStateList 对象。
为每个状态设置颜色后,您可以设置 navitaionView
itemTextColor (navigation.setItemTextColor(yourCustomColorStateList);
Here is another related Whosebug questions
Official Android documentation of all the available kind of state
示例:
在 main class
的 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
*/
您可以通过 xml 实现同样的效果,只需在 NavigationView 中使用 app:itemTextColor
:
<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 应该适用于您的情况。
希望对您有所帮助!
您可以在 您的 NavigationView
中使用 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>
我正在尝试更改 Activity 主抽屉的文本颜色,但找不到更改位置。我想把它换成更浅的颜色(白色)
这是我的 activity_main_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<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>
我试过在任何地方插入 android:textColor 但它不起作用。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
android:textColor="#FFFFFF">
<group android:checkableBehavior="single" android:textColor="#FFFFFF">
<item android:id="@+id/nav_cities" android:icon="@android:drawable/ic_menu_mapmode"
android:title="Cities" android:textColor="#FFFFFF"/>
您似乎在使用新的 Android Support Design Library
。我没用过。
我觉得你需要一些 Header Layout,它由 TextView
组成,如上面的屏幕截图所示。
稍后在 Java 代码中,您可以访问页眉布局并使用 findViewById()
获取 TextView
s.
让我知道它是否有效。
您需要使用
初始化您想要使用的颜色 ColorStateList 对象。为每个状态设置颜色后,您可以设置 navitaionView itemTextColor (navigation.setItemTextColor(yourCustomColorStateList);
Here is another related Whosebug questions
Official Android documentation of all the available kind of state
示例: 在 main class
的 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
*/
您可以通过 xml 实现同样的效果,只需在 NavigationView 中使用 app:itemTextColor
:
<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 应该适用于您的情况。
希望对您有所帮助!
您可以在 您的 NavigationView
中使用 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>