android 設置View控件的全局樣式和風格
android開發部中,不可避免的要設定某一類按鈕的按壓,點擊,聚焦等狀態,通常對于這一類問題而言,最原始的方式就是在布局文件中親自設定,然而對于一個比較大型的項目而言,這種方式造成的可維護性不是很好,因此要盡量做到代碼重用。
android項目中通常有3個設置樣式的資源文件夾
values
values-11
values-14
這三個對應不同平臺的sdk版本的樣式,對于android開發中兼容問題而言,要做到“讓最新的api運行在最新的android sdk中”,這是非常好的一種行為。
values文件主要用來設置主題樣式,權限依據平臺細分,也就是說android4.x會最先找values-14再去找values-11最后找values,android2.x最先找values-11最后找values
以上是values的設置問題,通常來說,style.xml一般被使用來設置 window和activity主題與樣式,但實際上,style.xml也可以用來設定控件的全局樣式。
下面有句名言:
盡量讓主題樣式和頁面風格保持統一,花花綠綠是最丑的風格。
——我,2014年12月07日最終總結
對于一個控件而言,如ToggleButton,RadioButton,CheckBox,滾動條顏色,Button,當點擊時狀態切換前后樣式是不一樣的。
一般來說,這種設置有2種,如下比如我設置字體:
style.xml-1
<style name="text_red_20_blod"> <item name="android:textStyle">bold</item> <item name="android:textSize">20.0sp</item> <item name="android:textColor">@color/red_text_color</item> </style>
這種的局限性和親自到布局文件設置的一樣,只不過少了許多代碼,提高了重用性,可以說只做到了部分全局化。
style.xml-2
<style name="AppTheme" parent="android:Theme.Holo.Light"> <item name="android:textStyle">bold</item> <item name="android:textSize">20.0sp</item> <item name="android:textColor">@color/red_text_color</item> </style>
這種事最全局的,提高了重用性,當然也有他的缺點,這點不可避免,那么在開發中,我們如何選擇呢?
-
style.xml-1 中樣式變化最為頻繁的View風格,這樣做可以避免layout文件中過多的代碼累計,就像css樣式一樣
-
style.xml-2適用于全局較為統一的View風格,也就是說是一些View的共性的統一,一般來說如ToggleButton,CheckBox,Button等View的狀態切換樣式在同一項目中總是保持著一直的變化效果。也就是說,當我們使用自定義放入ToggleButton切換狀態之后,下次再次使用ToggleButton風格應該和上次風格保持一致才對。
-
沖突問題,如果在style.xml-2下使用style.xml-1的內容將如何顯示,這個問題一句話可以描述:”全局性越低,控制權限越高“,也就是說,style.xml-1控制權限高于style.xml-2,因此如果同時影響某一控件的view風格的樣式被設置,那么也就是直接使用 style="@style/xxxx"的權限高于主題權限。
try doing it