繁体   English   中英

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

[英]How to change text color of Navigation Drawer menu when selected or pressed?

我想在单击导航抽屉时更改其文本颜色。

我该怎么做?

这是我的清单:

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

在此处输入图片说明

您可以采用如下线性布局:

<?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>

和values.xml中values.xml文件中的“父级”,您要以十六进制表示的颜色:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="parent">#90caf9</color>
</resources>
  • 您需要使用来初始化要使用的颜色
    ColorStateList对象。

  • 在为每种状态设置颜色后,您可以设置navitaionView itemTextColor(navigation.setItemTextColor(yourCustomColorStateList);

这是我得到答案的地方
这是另一个与Stackoverflow相关的问题
所有可用状态的官方Android文档

示例:在您的主类的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
     */

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

已经晚了,但也许可以帮助别人。 要更改文本颜色,只需将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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM