我正在製作一個應用程序,該應用程序使用子類別ImageView
來顯示帶有邊框的圖像而不是其中的一部分。以編程方式獲取主題顏色
現在盒子被繪製成黃色,不管怎麼樣,但我認爲如果顏色與系統按鈕按下的顏色相匹配,比如Droid橙色,Evo綠色或藍色Galaxy S
我環顧了一下API,但是找不到如何以編程方式抓住那個顏色。 任何想法?
我正在製作一個應用程序,該應用程序使用子類別ImageView
來顯示帶有邊框的圖像而不是其中的一部分。以編程方式獲取主題顏色
現在盒子被繪製成黃色,不管怎麼樣,但我認爲如果顏色與系統按鈕按下的顏色相匹配,比如Droid橙色,Evo綠色或藍色Galaxy S
我環顧了一下API,但是找不到如何以編程方式抓住那個顏色。 任何想法?
你可以看一下從Android的themes.xml
,styles.xml
,並且colors.xml
源。您從colors.xml中注意到的一件事是沒有定義很多顏色。這是因爲大部分小部件都是通過9個補丁文件完成的。
按鈕風格:
223 <style name="Widget.Button">
224 <item name="android:background">@android:drawable/btn_default</item>
225 <item name="android:focusable">true</item>
226 <item name="android:clickable">true</item>
227 <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
228 <item name="android:textColor">@android:color/primary_text_light</item>
229 <item name="android:gravity">center_vertical|center_horizontal</item>
230 </style>
全部完成更改背景顏色的工作在btn_default
Drawable
完成。
btn_default.xml來源:那些
17 <selector xmlns:android="http://schemas.android.com/apk/res/android">
18 <item android:state_window_focused="false" android:state_enabled="true"
19 android:drawable="@drawable/btn_default_normal" />
20 <item android:state_window_focused="false" android:state_enabled="false"
21 android:drawable="@drawable/btn_default_normal_disable" />
22 <item android:state_pressed="true"
23 android:drawable="@drawable/btn_default_pressed" />
24 <item android:state_focused="true" android:state_enabled="true"
25 android:drawable="@drawable/btn_default_selected" />
26 <item android:state_enabled="true"
27 android:drawable="@drawable/btn_default_normal" />
28 <item android:state_focused="true"
29 android:drawable="@drawable/btn_default_normal_disable_focused" />
30 <item
31 android:drawable="@drawable/btn_default_normal_disable" />
32 </selector>
每一個是一個9補丁文件。問題在於那些是png。顏色被嵌入到圖像文件中,並且不在任何地方定義。正如您已經注意到,這些圖像可以被替換,外觀也會改變。
不幸的是,你想要的是不可能的。你將不得不選擇一種顏色。這種顏色可能應該選擇適合您的應用程序的其餘部分。對不起:(
那真是令人沮喪。不過謝謝。 – infinitypanda 2010-08-03 16:23:43
檢查此鏈接:Using Platform Styles and Themes
我不知道,如果子類是在這種情況下,做的最好的事情。 我會嘗試:
我讀過,但它沒有幫助。它告訴我如何設置主題,但我想獲得主題。 ImageButton並不是我要找的,對不起。圖片不需要點擊,我只想使用與按鈕相同的顏色。 – infinitypanda 2010-07-30 22:04:41
於Android ICE_CREAM_SANDWICH(API 14),你必須在android.R.color主題顏色*
例如;
myTextView.setTextColor(getResources().getColor(android.R.color.holo_red_light));
在我有限的理解中,android.R.color提供的一些東西是靜態顏色,而不是應用程序主題(可在運行時變化)的可變顏色。這樣做的答案在這裏:http://stackoverflow.com/questions/12375766/how-to-get-background-color-from-current-theme-programmatically – pbarranis 2016-02-12 17:16:25
這是一個很好的問題,我害怕沒有解決方法,真的很傷心 – mad 2011-01-02 18:48:53
這個問題已經問了5年了......當前的答案現在位於這裏:http://stackoverflow.com/questions/12375766/how-to-get-background-顏色從當前主題編程方式(第一個答案肯定有效......) – pbarranis 2016-02-12 17:17:06