NavigationView更改菜單icon和title顏色變化效果

NavigationView menu默認icon和title會隨著菜單狀態改變而改變,選擇某個菜單后再次打開側邊菜單后會發現該菜單的icon和title會變成應用的主顏色,其他菜單項仍然為黑色。

選中的菜單icon和title會變成應用的主顏色

如果想關閉系統默認的這個效果,有兩種方式:

1. XML布局文件設置

 <android.support.design.widget.NavigationViewandroid:id="@+id/mainNavView"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="start"android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:itemTextColor="@color/colorPrimary" app:itemIconTint="@color/colorPrimary" app:menu="@menu/main_drawer"> </android.support.design.widget.NavigationView>

代碼中的app:itemTextColor=”@color/colorPrimary”設置菜單title的顏色,app:itemIconTint=”@color/colorPrimary”設置菜單icon的顏色,如果icon的顏色設為null,即app:itemIconTint=”@null”,則icon的顏色還是會隨菜單的狀態改變而改變。

2.代碼中設置

mainNavView.setItemTextColor(null);
mainNavView.setItemIconTintList(null);

這樣設置后icon和title的顏色就是默認的了,比如說你的icon原圖是紅色的,那么顯示就是紅色,而title默認都是黑色的。

如果你想自定義系統默認的顏色變化,也有如下兩種方式:

1.XML資源文件設置

新建一個selector為根標簽的資源文件,名稱姑且為nav_menu_text_color,代碼如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_checked="true" android:color="@color/checked_color"/><item android:state_checked="false" android:color="@color/uncheck_color"/> </selector>

然后在java代碼中將該資源文件設置為icon和title的顏色即可。

 mainNavView.setItemTextColor(resources.getColorStateList(R.drawable.nav_menu_text_color, null)); mainNavView.setItemIconTintList(resources.getColorStateList(R.drawable.nav_menu_text_color, null));

2.代碼中設置

int[][] states = new int[][]{
new int[]{ -android.R.attr.state_checked}, new int[]{android.R.attr.state_checked} }; int[] colors = new int[]{ getResources().getColor(R.color.checked_color), getResources().getColor(R.color.uncheck_color) }; ColorStateList csl = new ColorStateList(states, colors); mainNavView.itemTextColor = csl mainNavView.itemIconTintList = csl

這樣設置完成后,選中的菜單icon和title顏色為checked_color,可以隨意設置你想要的任何顏色,未選中則是uncheck_color

轉載于:https://www.cnblogs.com/Free-Thinker/p/8981930.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452793.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java項目打鏡像_docker通過dockerfile打java項目鏡像

環境&#xff1a;centos7思路&#xff1a;java -jar 啟動的項目打包成docker images進行運行創建dockerfile——>創建shell腳本——>打包images1、dockerfile內容如下[rootk8s-master xxl-execl]# more dockerfile#網上拖取java8的鏡像FROM java:8MAINTAINER zhangshan-m…

什么是數據庫

數據庫&#xff08;Database&#xff0c;簡稱DB&#xff09;是長期儲存在計算機內、有組織的、可共享的大量數據的集合。1.數據庫的基本特征2.數據按一定的數據模型組織、描述和儲存3.可為各種用戶共享4.冗余度較小5.數據獨立性較高6.易擴展

NumPy常用屬性及方法

NumPy是高性能科學計算和數據分析的基礎包。部分功能如下&#xff1a; ndarray, 具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。用于對整組數據進行快速運算的標準數學函數&#xff08;無需編寫循環&#xff09;。用于讀寫磁盤數據的工具以及用于操作內存映射文件…

Windows下gmssl使用記錄

使用gmssl進行計算sm4&#xff0c;編譯的版本是gmssl2.0&#xff0c;2.1版本編譯不過去 第一步下載軟件&#xff0c;下載Visual Studio 2010旗艦版、nasm-2.13.03-installer-x86、ActivePerl-5.22.4.2205-MSWin32-x86-64int-403863這三個軟件&#xff0c; 注意vs版本不能太低&a…

公司管理項目管理中的技巧

如果在項目實施中選出最難解決的幾個問題&#xff0c;那么管理問題一定名列前茅。在管理問題中&#xff0c;團隊管理又是其中的難點。一個項目管理的好壞&#xff0c;很大程度就體現在團隊的建設和管理上。團隊管理涉及到管理學、心理學和哲學等諸多方面內容&#xff0c;具體實…

數據庫管理系統

什么是數據庫管理系統位于用戶與操作系統之間的一層數據管理軟件是基礎軟件&#xff0c;是一個大型復雜的軟件系統 數據庫管理系統的用途科學地組織和存儲數據、高效地獲取和維護數據數據定義功能提供數據定義語言&#xff08;DDL&#xff09;定義數據庫中的數據對象數據組織、…

kangle服務器搭建java_linux下kangle虛擬主機-架設java空間的教程及心得

1. chmod x jdk-6u31-linux-i586-rpm.bin2. ./jdk-6u31-linux-i586-rpm.bin復制代碼(注&#xff1a;如果下載的版本不同輸入實際版本)2.下載插件包:1. wget http://www.kanglesoft.com/download/ent/easypanel-tomcat-lin-1.0.tar.gz2. tar xzf easypanel-tomcat-lin-1.0.tar.g…

Django項目--登錄判斷裝飾器

view.py中定義登錄判斷裝飾器函數 def login_required(view_func):登錄判斷裝飾器def wrapper(request, *view_args, **view_kwargs):# 判斷用戶是否登錄if request.session.has_key(islogin):# 用戶已登錄,調用對應的視圖return view_func(request, *view_args, **view_kwarg…

Apple著手拋棄32位macOS應用程序

\看新聞很累&#xff1f;看技術新聞更累&#xff1f;試試下載InfoQ手機客戶端&#xff0c;每天上下班路上聽新聞&#xff0c;有趣還有料&#xff01;\\\Apple已經著手拋棄macOS上的32位應用程序了。macOS的下一個維護更新版本High Sierra 10.13.4將會在用戶打開32位應用程序時對…

HiveQL與SQL區別

1、Hive不支持等值連接 ?SQL中對兩表內聯可以寫成&#xff1a;?select * from dual a,dual b where a.key b.key;?Hive中應為?select * from dual a join dual b on a.key b.key; 而不是傳統的格式&#xff1a;SELECT t1.a1 as c1, t2.b1 as c2FROM t1, t2WHERE t1.a2 t…

Django項目--csrf攻擊

1.案例流程圖&#xff1a; 2.django防止csrf的方式&#xff1a; 1 ) Django中默認打開csrf中間件。settings.py文件中&#xff1a; MIDDLEWARE_CLASSES (django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middlewar…

數據庫管理系統與數據庫系統

數據庫&#xff1a;容納數據的倉庫。數據庫系統&#xff1a;數據庫、數據庫管理系統、硬件、操作人員的合在一起的總稱。數據庫管理系統&#xff1a;用來管理數據及數據庫的系統。數據庫系統包含數據庫管理系統、數據庫及數據庫開發工具所開發的軟件&#xff08;數據庫應用系統…

如果你扯了團隊后腿,你應該內疚

現在&#xff0c;我看到很多人扯了團隊的后腿&#xff0c;一句道歉就了事&#xff0c;更甚者就以另一種方式來表達&#xff1a;你們沒有給我足夠的培訓&#xff0c;你們的工作方式我無法接受&#xff0c;我工資太低&#xff0c;你們做的事情不夠酷&#xff0c;你們做的事情不賺…

mysql count(*),count(1)與count(column)區別

2019獨角獸企業重金招聘Python工程師標準>>> count(*)對行的數目進行計算&#xff0c;包含NULL count(column)對特定的列的值具有的行數進行計算&#xff0c;不包含NULL值。 count()還有一種使用方式&#xff0c;count(1)這個用法和count(*)的結果是一樣的。 性能問…

Java IO API記錄

文件路徑&#xff1a; public static final String FILEPATH File.separator"Users" File.separator"xuminzhe"File.separator"Documents"File.separator"io"; 1.創建文件 public static void main(String[] args) {File filenew File…

Flask項目--預防csrf攻擊原理

1.CSRF機制原理 2.csrf成功攻擊示意圖 3.csrf防御

數據管理技術的發展過程

人工管理階段&#xff08;20世紀50年代中之前&#xff09;文件系統階段&#xff08;20世紀50年代末--60年代中&#xff09;數據庫系統階段&#xff08;20世紀60年代末--現在&#xff09;

一次失敗的項目經理招聘經驗

成功的原因有許多種&#xff0c;而失敗的原因往往就那么幾種。人們更愿意去討論自己是如何成功的&#xff0c;確不太情愿開誠布公的去剖析自己是如何失敗的。而時刻去反思自己失敗的案例&#xff0c;我們會進步的更快&#xff01; 和大家分享一個2010年發生在我身邊的真實案例&…

NG客制項目下的I18n國際化標準方案

方案選擇 國際化i18n ? 這個方案是最成熟的&#xff0c;同時也是官方的方案&#xff0c;但是這樣一個標準化的方案同時意味著靈活度不夠。當需要劃分feature module&#xff0c;需要客制化組件的時候&#xff0c;這個方案的實施的成本就會遠遠超過預期&#xff0c;因此在項目中…