2010-07-30 54 views
15

我正在製作一個應用程序,該應用程序使用子類別ImageView來顯示帶有邊框的圖像而不是其中的一部分。以編程方式獲取主題顏色

現在盒子被繪製成黃色,不管怎麼樣,但我認爲如果顏色與系統按鈕按下的顏色相匹配,比如Droid橙色,Evo綠色或藍色Galaxy S

我環顧了一下API,但是找不到如何以編程方式抓住那個顏色。 任何想法?

+0

這是一個很好的問題,我害怕沒有解決方法,真的很傷心 – mad 2011-01-02 18:48:53

+0

這個問題已經問了5年了......當前的答案現在位於這裏:http://stackoverflow.com/questions/12375766/how-to-get-background-顏色從當前主題編程方式(第一個答案肯定有效......) – pbarranis 2016-02-12 17:17:06

回答

7

你可以看一下從Android的themes.xmlstyles.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_defaultDrawable完成。

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。顏色被嵌入到圖像文件中,並且不在任何地方定義。正如您已經注意到,這些圖像可以被替換,外觀也會改變。

不幸的是,你想要的是不可能的。你將不得不選擇一種顏色。這種顏色可能應該選擇適合您的應用程序的其餘部分。對不起:(

+0

那真是令人沮喪。不過謝謝。 – infinitypanda 2010-08-03 16:23:43

1

檢查此鏈接:Using Platform Styles and Themes

我不知道,如果子類是在這種情況下,做的最好的事情。 我會嘗試:

  • 使用ImageButton而不是子類。
  • 將平臺樣式添加到按鈕。
+2

我讀過,但它沒有幫助。它告訴我如何設置主題,但我想獲得主題。 ImageButton並不是我要找的,對不起。圖片不需要點擊,我只想使用與按鈕相同的顏色。 – infinitypanda 2010-07-30 22:04:41

7

於Android ICE_CREAM_SANDWICH(API 14),你必須在android.R.color主題顏色*

例如;

myTextView.setTextColor(getResources().getColor(android.R.color.holo_red_light)); 
+1

在我有限的理解中,android.R.color提供的一些東西是靜態顏色,而不是應用程序主題(可在運行時變化)的可變顏色。這樣做的答案在這裏:http://stackoverflow.com/questions/12375766/how-to-get-background-color-from-current-theme-programmatically – pbarranis 2016-02-12 17:16:25

相關問題