主題
可以把主題看作是樣式的加強版本。同樣是定義一套公共主題屬性,樣式屬性需要逐個添加,而主題屬性則會自動應用於整個應用中。
默認主題
新建的Android項目都自帶默認主題,找到並打開AndroidManifest.xml文件可以看到application標籤下的theme屬性,如下圖所示:
theme屬性指向的主題叫AppTheme,定義在styles.xml文件中。
在styles.xml文件中查看AppTheme主題
AppCompat庫自帶三大主題:
- Theme.AppCompat :深色主題
- Theme.AppCompat.Light:淺色主題
- Theme.AppCompat.Light.DarkActionBar:帶深色工具欄的淺色主題
上圖中的三個主題屬性適用於所有使用同一主題的組件:
- cololrPrimary:主要用來設置工具欄背景色,由於應用名稱是顯示在工具欄上的,也可以成爲應用品牌色。
- colorPrimaryDark:用於屏幕頂部的狀態欄(注意只有Lollipop以後的系統支持狀態欄主題色,對於之前的系統,無論指定什麼主題顏色,狀態欄都是不變的黑色)
- colorAccent:主要用於給EditText這樣的組件着色
覆蓋主題屬性
想要更改應用程序中的某個控件的屬性,首先需要確定這個屬性名稱是什麼,對於一些不確定的屬性名,需要採取向上追溯的方法,找出主題繼承的源頭,然後憑感覺挑選一個驗證猜想。比如在styles文件中選擇Theme.AppCompat.Light.DarkActionBar,ctrl+B跳轉到定義的文件,依次查找父主題,直到查找到目標屬性。還有一點需要注意的是,找到屬性名之後在引用的時候需要添加android:前綴,因爲這些主題包含在Android操作系統中。
有一些屬性名比如textColor,textSize,這些都知道的就不需要再尋找。只需要尋找那些我們不確定的。