如何在选择或按下时更改导航抽屉菜单的文本颜色?

时间:2015-04-24 16:16:07

标签: android menu colors

我想在点击导航抽屉时更改文字颜色。

我该怎么做?

这是我的清单:

<ImageView
    android:id="@+id/icon"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="10dp"
    android:contentDescription="@string/desc_list_item_icon"
    android:src="@drawable/ic_launcher"/>

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:paddingLeft="50dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:textSize="15dp"
    android:textStyle="bold"
    android:gravity="center_vertical" />

enter image description here

4 个答案:

答案 0 :(得分:2)

你可以采用如下的线性布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/row_highlighter"
    android:padding="5dp" >

        <TextView
            android:id="@+id/parentTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="@string/app_name"
            android:textColor="@android:color/black"
            android:textSize="15sp" />


</LinearLayout>

和drawable文件夹中的row_highlighter:

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

    <item android:drawable="@color/parent" android:state_activated="true"/>
    <item android:drawable="@android:color/white" android:state_pressed="true"/>
    <item android:drawable="@color/parent"/>

</selector>

和&#34;父母&#34;在colors.xml文件夹中的颜色你想要的是十六进制:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="parent">#90caf9</color>
</resources>

答案 1 :(得分: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方法中使用它只需设置状态的颜色适当地使用this official developer documentation作为状态列表

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
     */

答案 2 :(得分:0)

您可以使用列表中的itemclicklistener或使用状态可绘制资源文件在代码中执行此操作

答案 3 :(得分:0)

现在已经晚了,但也许可以帮助其他人。要更改文本颜色,只需将 android:textColor 链接到Selector drawable:

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:paddingLeft="50dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:textSize="15dp"
    android:textStyle="bold"
    android:textColor="@drawable/menu_item_color_selector"
    android:gravity="center_vertical" />

这是drawable目录中的menu_item_color_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/colorPrimary"/>
    <item android:color="@color/navMenuTextColor"/>
</selector>