如果你的應用中大多數TextView的顏色是紅色, 或者其他顏色, 你是為每一個TextView都設定一次顏色, 還是有其他更好的辦法, 這裡教你怎麼修改TextView的預設顏色。
當然我們TextView的遠嗎入手。
通過查看 TextView 源碼, 發現如下代碼:
這段代碼錶示, TextView的預設樣式名稱是 textViewStyle。 然後在Themes.xml中的Theme下面找到 textViewStyle, 可以發現如下代碼
@android:style/Widget.TextView
而且不同的主題TextViewStyle的值是不一樣的。其中:
- Theme 下面是 @android:style/Widget.TextView;
- Theme.Height 下面沒有這個值, 不知道為什麼;
- Theme.Holo 下面是 :@android:style/Widget.Holo.TextView;
- Theme.Holo.Light 下面是 @android:style/Widget.Holo.Light.TextView;
接著查看源碼TextView, 在509行發現如下代碼:
=;
這段代碼的功能就是用於擷取顏色的。 可以發現是通過com.android.internal.R.styleable.TextAppearance_textColor的值。 然後我們查看style.xml檔案, 找到如下代碼:
?android:attr/textAppearanceSmall
Widget.TextView 就是上文找的 Theme下面的TextViewStyle的值。 然後我們看到 android:textAppearance 這個就是TextView源碼中提到過的。 自然接下來查看:?android:attr/textAppearanceSmall 在Theme中定義的值的是什麼。
@android:style/TextAppearance.Small
我們看到textAppearanceSmall值是 @android:style/TextAppearance.Small, 然後當然要找到@android:style/TextAppearance.Small在style.xml中找到:
14sp ?textColorSecondary
可以看到顏色的定義名稱是 ?textColorSecondary, 到這裡我們終於找到定義顏色的地方了。 這個各個主題鮮明都有定義,不止一處。
@android:color/secondary_text_dark
在Theme中我們終於看到定義TextView的顏色的代碼了。 比如把TextView預設顏色改為 #333333, 使用如下代碼
#333333