簡體   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