如何在Android中更改活动主抽屉的文本颜色

时间:2015-11-14 12:03:50

标签: android android-layout android-styles

我正在尝试更改活动主抽屉的文字颜色,但我无法找到更改它的位置。我想把它改成浅色(白色)

enter image description here

这是我的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>

4 个答案:

答案 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

&#13;
&#13;
<?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;
&#13;
&#13;