2012-10-20 33 views
8

我想訪問定義爲可繪製資源的顏色資源,並希望在JAVA中切換背景顏色,基本上使用下面提到的可繪製XML更改了按鈕的背景。我嘗試訪問按鈕並修改顏色屬性,但這改變了按鈕的形狀爲正常的方形。我想保持可繪製XML定義的形狀並手動更改背景顏色。如何在java中訪問可繪製的資源(顏色)

<?xml version="1.0" encoding="UTF-8"?> 

<item android:state_pressed="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#EAEAEA" /> 

     <corners android:bottomLeftRadius="8dip" 
      android:bottomRightRadius="1dip" 
      android:topLeftRadius="1dip" 
      android:topRightRadius="8dip" /> 
    </shape> 
    </item> 

<item><shape android:shape="rectangle"> 
     <solid android:color="#EAEA00" /> 

     <corners android:bottomLeftRadius="8dip" 
      android:bottomRightRadius="1dip" 
      android:topLeftRadius="1dip" 
      android:topRightRadius="8dip" /> 
    </shape> 
    </item> 

+0

我想ü需要添加@色/「whatevercolor是「並將其添加到您的按鈕xml –

+0

我不知道如何做到這一點,是否有任何示例代碼指向此?謝謝 – RN55

+1

android:color =「@ android:color/black」。 _Hope it helps_ –

回答

5

你有2種可能:

  • myButton.setBackgroundColor(Color.CHOOSE_ONE);
  • myButton.setBackgroundResource(R.color.youCustomColor);

如果你想設置從十六進制值的顏色只使用Color類的靜態方法:

myButton.setBackgroundColor(Color.parseColor("#RRGGBB")); 
//http://developer.android.com/reference/android/graphics/Color.html#parseColor%28java.lang.String%29 
+0

我的問題是關於如何通過Java代碼控制XML中定義的參數?我的意思是''這個定義在之間,我怎樣才能從Java代碼訪問這個顏色參數? – RN55

+0

當我嘗試使用在XML中定義的自定義顏色時,出現錯誤。我的Eclipse ADT迫使我使用如下格式:'myTextView.setTextColor(getResources()。getColor(R.color.mycustomXMLcolor));'爲什麼會發生這種情況? – reubenjohn

0

如果您使用的是資源的顏色你或許應該getResources().getColor(R.color.example_color)

對於這個選項來解決它,你的代碼將是如下:

myButton.setBackgroundResource(getResources().getColor(R.color.example_color));