在Android中我們經(jīng)常需要設(shè)置屏幕頂部狀態(tài)欄的主題和應用頁面保持同一風格,本文介紹幾種常用的設(shè)置方案:
站在用戶的角度思考問題,與客戶深入溝通,找到深圳網(wǎng)站設(shè)計與深圳網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋深圳地區(qū)。
首先給出一張圖:
2 2
通過上圖,我們可以通過設(shè)置不同的屬性來達到控制不同位置顏色的目的,下面給出使用示例,修改res/values-19里面的內(nèi)容:
主要是設(shè)置 colorPrimary,colorPrimaryDark這兩個屬性的值來設(shè)置狀態(tài)欄的顏色,需要注意的是:
1:AndroidManifest.xml文件中的targetSdkVersion必須設(shè)置在 21 以上。
2.parent主題必須是 Theme.AppCompat 開頭,兼容包下的主題,所以必須一用 v7 包。
在頂部標題欄設(shè)置屬性值達到風格一致的目的
首先修改res/values-v19文件夾下的styles.xml文件內(nèi)容如下(如果沒有可以新建一個):
然后設(shè)置頂部標題控件的兩個屬性:
這時狀態(tài)欄會保持與設(shè)置fitsSystemWindow屬性的控件的背景顏色一致。
Android開發(fā)中,經(jīng)常需要實現(xiàn)下圖狀態(tài)欄的效果,類似于沉浸式狀態(tài)欄,但這里僅僅是討論設(shè)置狀態(tài)欄的顏色和狀態(tài)欄上面文字、圖標的顏色的方法。
Android 4.4(API 19)之后,就提供了修改狀態(tài)欄顏色的方法,但是在 Android 6.0(API 23)之后,才支持修改狀態(tài)欄上面的文字和圖標顏色,默認是白色的。所以會導致一個問題,在 4.4 到 6.0 之間的系統(tǒng),狀態(tài)欄設(shè)置為淺色的話,狀態(tài)欄上面白色的文字和圖標會看不清,像下面這樣:
有一些第三方的系統(tǒng)提供了設(shè)置狀態(tài)欄和狀態(tài)欄文字、圖標顏色的方法,比如小米的MIUI和魅族的Flyme,所以考慮了下比較好的實現(xiàn)方式是:
當然,這里面也會有坑,比如 MIUI 提供的修改狀態(tài)欄字體顏色方法會跟 Android 系統(tǒng)自帶的方法沖突,官方說明如下: 關(guān)于MIUI狀態(tài)欄字符顏色邏輯調(diào)整說明
經(jīng)過網(wǎng)上的資料和自己的嘗試,MIUI 系統(tǒng)還是同時使用 MIUI 提供的方法和 Android 系統(tǒng)自帶的方法來修改狀態(tài)欄字體顏色比較保險。
基于上面的思考,封裝了設(shè)置 Android 4.4 以上系統(tǒng)狀態(tài)欄顏色和狀態(tài)欄字體、圖標顏色的方法:
要在 Application Theme 加上 item name="android:fitsSystemWindows"true/item ,不然頁面會頂?shù)綘顟B(tài)欄上面,或者在 Activity 的布局里面加上 android:fitsSystemWindows="true" 和 android:clipToPadding="false" 也可以。
最終實現(xiàn)的效果如下:
大家有更好的方案可以告訴我~
安卓車機色彩設(shè)置參數(shù),具體操作如下。
一、AndroidColor設(shè)置
1、在xml文件中
想設(shè)置顏色直接設(shè)置background的屬性或者其他的color屬性。隨便設(shè)置一個顏色如#000,再點擊左邊的顏色方塊,彈出顏色選擇器選擇顏色
2、在java代碼中
①Color.parseColor("#000");
1
tvShow.setBackgroundColor(Color.parseColor("#000"));
【提示】可以在布局文件中配置好顏色值,然后把用“#”表示的顏色帶到j(luò)ava代碼中用
②Color.BLACK使用Color類自帶的顏色,不過都是一些基本色
tvShow.setBackgroundColor(Color.BLACK);
③定義Color資源文件,通過R.color.myColor引用
Android中顏色是由透明度(alpha)和紅綠藍(RGB)定義的,兩種編碼方式:
1、八位十六進制數(shù),例如FFEEDDCC,F(xiàn)F代表透明度(完全不透明),EE代表紅色(值越大紅色越深),DD代表綠色,CC代表藍色;
2、六位十六進制數(shù),同上;
注意:六位編碼在XML中默認不透明(FF),在代碼中默認透明(00);在代碼中設(shè)置顏色,可以直接填八位的十六進制數(shù)值,如setTextColor(0xff00ff00);,也可以通過Color.rgb(int red, int green, int blue)和Color.argb(int alpha, int red, int green, int blue)來指定顏色。
如果在代碼中使用colors.xml中設(shè)置的顏色,可按如下方式獲取setTextColor(getResources().getColor(R.color.black));
原文鏈接
Android 中設(shè)置TextView的顏色有方法setTextColor,這個方法被重載了,可以傳入兩種參數(shù)。一種方法是傳入int color值,要注意這個int不是R文件中自動分配的十六進制int值,這是Color類中的靜態(tài)方法構(gòu)造出來的顏色int值。另一種方法是通過ColorStateList得到xml中的配置的顏色的。好多需要xml中配置的都要類似這樣的映射xml文件(比如一個按鈕事件的選擇器,默認狀態(tài)為顏色A,點擊時狀態(tài)為顏色B等等選擇效果)。
setTextColor的兩種重載方法如下:
[java] view plain copy
publicvoidsetTextColor(intcolor)?{
mTextColor?=?ColorStateList.valueOf(color);
updateTextColors();
}
publicvoidsetTextColor(ColorStateList?colors)?{
if(colors?==null)?{
thrownewNullPointerException();
}
mTextColor?=?colors;
updateTextColors();
}
第一種重載方法有以下實現(xiàn)方式:
方法一:通過ARGB值的方式
textview.setTextColor(Color.rgb(255,255, 255));
textview.setTextColor(Color.parseColor("#FFFFFF"));
方法二:通過資源引用
textview.setTextColor(mContext.getResources().getColor(R.drawable.contact_btn_text_red))
#f2497c
第二種重載方法的實現(xiàn):
[java] view plain copy
textview.setTextColor(mContext.getResources().getColorStateList(R.drawable.big_btn_text_color));
選擇器big_btn_text_color.xml
[html] view plain copy