Android 中的 theme 和 style(3)
Themes
通常定義 Activity 的長什麼樣
- Theme.Material
- Theme.Material.Dialog
-
Theme.Material.Light.DarkActionBar
主題通常是固定以 Theme 點什麼這樣形式開頭,
Overlay themes
- ThemeOvery.Material.Light
- ThemeOvery.Material.Dark
- ThemeOvery.Material.Dialog
主題顏色
- colorForeground
- colorForegroundInverse
- colorBackground
- colorBackgroundFloating
通常我們會有前景色和背景色,根據是淺色主題還是深色主題,他們前景色和背景色可能是黑白組合或白黑組合。通常我們不會用簡單黑白來分別表示深淺色。
這裡我們以 switch 元件為例,switch 元件中包含了多種顏色,我們可以定義 switch 前景色和背景色,其實這些顏色都基本上都是根據黑白的變化而得來的。
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:color="?attr/colorForeground" android:alpha="?attr/disabledAlpha"/> <item android:state_checked="true" android:color="?attr/colorControlActivated"/> </selector>
這裡定義 switch 不同狀態下顏色搭配。在禁用 情況根據前景色降低透明度來表示禁用。
- textColorPrimary
- textColorPrimaryInverse
- textColorSecondary
- textColorSecondaryInverse
在textColor 文字顏色中,primary 也就是主色用於讓使用者一目瞭然,清晰可見可以引起使用者注意的文字上。所以就要求文字顏色顯眼。Secondary 文字顏色會根據 material 中的規範計算得來,通常是 primary 的 84% 或 56% 的透明度。
- <font color=#ff4081>colorAccent</font>
- colorPrimary
-
colorPrimaryDark
colorControlNormal(預設為 textColorSecondary)
colorControlActivated(預設為 colorAccent)
colorAcent 通常用於元件選中的情況,對比強烈,如果深色主題可以考慮用淺色的 colorAccent,colorControlNormal 為預設的元件的顏色,然後元件有 icon 強烈推薦將 icon 設定 colorControlNormal,為了保持 icon 在不同元件中一致性,所以推薦使用 colorControlNormal 設定 icon (圖示)的顏色。