2013-04-08 37 views
0

我有一個xml文件res/color/btn_black,它允許我對按鈕應用漸變外觀。在其他地方如何將res/color/xml樣式應用到動態創建的按鈕

<Button 
    android:background="@color/btn_black" 
/> 

,我在Java中動態創建按鈕和我想申請相同的風格:

我可以通過調用使用它成功一個layout.xml。當我嘗試使用這個:

myButton.setBackgroundColor(getResources().getColor(R.color.btn_black)); 

我得到這個錯誤:

android.content.res.Resources$NotFoundException: 
    File res/color/btn_black.xml from color state list resource ID #0x7f040001 

這似乎是從我發現這裏回答其他問題的正確方法,但它不是爲我工作。我究竟做錯了什麼?

編輯:這是參考

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" > 
    <shape> 
     <solid 
      android:color="#343434" /> 
     <stroke 
      android:width="1dp" 
      android:color="#171717" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
    </item> 
    <item> 
    <shape> 
     <gradient 
      android:startColor="#343434" 
      android:endColor="#171717" 
      android:angle="270" /> 
     <stroke 
      android:width="1dp" 
      android:color="#171717" /> 
     <corners 
      android:radius="4dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
    </item> 
</selector> 
+0

和XML for color/btn_black是什麼? – 2013-04-08 21:25:17

+0

確實有一個名爲btn_black.xml的文件或什麼? – 2013-04-08 21:44:22

+0

在上面添加了btn_black.xml。 – 2013-04-08 22:12:21

回答

0

文件btn_black.xml我認爲最好的辦法是定義一個佈局具有特定樣式的按鈕。 然後,您可以用您創建的佈局充滿按鈕。

請參閱具體的幫助這個問題android set style in code

所以你的情況,你可以用你的XML文件定義的佈局和膨脹程序創建按鈕

+0

這部分有用。我將我的代碼更改爲 Button myButton = new Button(EventsActivity.this,null,R.color.btn_black); 它不再崩潰,但按鈕不顯示。只是文字。 (現在甚至沒有默認的灰色按鈕。) – 2013-04-08 22:14:36

2

好像在你colors.xml中定義的顏色錯誤的方法。你colors.xml應該是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="btn_black">#000000</color> 
</resources> 

依我之見,你定義了RES /顏色/ btn_black.xml,什麼是錯的。您需要在/ res/values /目錄中創建colors.xml文件。

如果您有一個漸變xml文件,那麼您需要將它放在/ res/drawable /文件夾中並調用myButton.setBackground(getResources()。getDrawable(R.drawable.btn_black))方法。

+0

請參閱上面的其他xml。它不只是一種顏色,它是一種風格。它在xml佈局中工作得很好,我只需要知道如何在Java中應用它。 – 2013-04-08 22:13:11

+0

將其作爲樣式,在/res/values/styles.xml中爲按鈕定義樣式,並在/res/drawable/my_gradient.xml中定義一個漸變,您可以使用 @ drawable/my_gradient 2013-04-08 22:18:30

+0

你可以檢查如何在這個discusion中按鈕的樣式:http://stackoverflow.com/questions/6608170/how-to-define-button-background-at-one-place -and-used-around-the-whole-app – 2013-04-08 22:20:38