如果你依照 AppCompat v21 — Material Design for Pre-Lollipop Devices! 文件中的說明,為你的 APP 加上 material style 的顏色設定 (colorPrimary, colorPrimaryDark, colorAccent)。執行時,你會發現只有 Activity 內的 ActionBar(Toolbar) 或 Views 會套用這些顏色設定。就算在 Android 5+ 上面執行,Dialog (AlertDialog) 中各 Views 的顏色並不支援 material style 的顏色設定。就像上圖中的左邊,RadioButton 不是 colorAccent 所定義的顏色。
這原因在於 AppCompatV7 (r21) 並不支援 Dialog 或 AlertDialog。要解決這個問題,有兩種方法:
第一種解法是加一個 res/values-v21/themes.xml,其內容如下範例:
這解法的的好處是簡單,不用額外的套件。壞處是在 Android 4- 平台上,Dialog 的長相與 Views 顏色仍然與原生平台相同。
第二種解法是採用 Material Dialogs 這個套件。優點是在 Android 4+ 平台上會有一致的 Dialog 長相與 Views 顏色,缺點是這位開發者三天兩頭就改個版本,看來離穩定版還有一段距離。
如果你問我,我現在是用那個解法?答案是解法一,因為用第三方套件的風險實在很高,非必要盡量少用,以免增加無謂的程式錯誤與維護程式的複雜度。
1 則留言:
前幾天才寫完這篇,又發現一個新的類似套件:
https://github.com/avast/android-styled-dialogs
張貼留言