![](/img/trans.png)
[英]How to change the text and icon color of selected menu item on Navigation Drawer programmatically using java
[英]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.