2011-02-07 44 views
3

在兩個不同的活動中,我想使用相同的漸變繪製但具有不同的顏色。 我想指在後續的方式漸變顏色以活動主題:重新使用漸變繪製與主題相關的顏色

我已經添加後續行中attrs.xml

<attr name="backgroundTopColor" format="color" /> 
<attr name="backgroundBottomColor" format="color" /> 

在bg_gradient.xml我輸入

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="?backgroundTopColor" 
     android:endColor="?backgroundBottomColor" 
     android:angle="270" /> 
    <corners android:radius="0dp" /> 
</shape> 

在活動主題,我已添加

<item name="backgroundTopColor">#FFFFFFFF</item> 
<item name="backgroundBottomColor">#FFFFFF00</item> 

在logcat中啓動應用程序後

02-07 14:03:59.479:ERROR/AndroidRuntime(2096):java.lang.UnsupportedOperationException:致無法轉換爲顏色:類型= 0X2
02-07 14:03: 59.479:ERROR/AndroidRuntime(2096):at android.content.res.TypedArray.getColor(TypedArray.java:326)
02-07 14:03:59.479:ERROR/AndroidRuntime(2096):at android.graphics.drawable .GradientDrawable.inflate(GradientDrawable.java:647)
02-07 14:03:59.479:ERROR/AndroidRuntime(2096):at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
02- 07 14:03:59.479:錯誤/ AndroidRuntime(2096):在android.graphics.drawable.Drawable.crea teFromXml(Drawable.java:729)
02-07 14:03:59.479:ERROR/AndroidRuntime(2096):at android.content.res.Resources.loadDrawable(Resources.java:1694)
02-07 14: 03:59.479:錯誤/ AndroidRuntime(2096):... 29更多

我該如何解決這個問題?

謝謝

注:API等級= 8

回答

0

您應該使用"?attr/backgroundTopColor"而不是"?backgroundTopColor"引用您的屬性。

編輯:如果您間接引用顏色會發生什麼?而不是在你的主題句古話:

<item name="backgroundTopColor">#FFFFFFFF</item> 

你這樣做:

<item name="backgroundTopColor">@color/myColor</item> 

然後在colors.xml,您可以添加:

<color name="myColor">#FFFFFFFF</color> 

我懷疑,什麼可能發生的是,該屬性期望顯式顏色。至少,我已經完成了你所概括的內容,除了我總是間接引用顏色,而不是把它放在我的主題中。

+0

同樣的錯誤。它不起作用。 :( – Premier 2011-02-07 14:44:20