2011-02-07 13 views
3

2つの異なるアクティビティで、同じグラデーション描画を使用したいが、色は異なる。 は私がフォローの方法で、活動のテーマにグラデーションの色を参照すると思う:テーマ依存の色を使用してグラデーション描画を再利用する

は私が活動に

<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> 

を入力bg_gradient.xmlで

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

attrs.xmlでフォロー行を追加しましたテーマを追加しました

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

logcatでアプリケーションを開始した後

2月7日14:03:59.479:ERROR/AndroidRuntime(2096):java.lang.UnsupportedOperationExceptionが:による色に変換できません:タイプ= 0x2の
2月7日14:03: 59.479:ERROR/AndroidRuntime(2096):android.content.res.TypedArray.getColor(TypedArray.java:326)
02-07 14:03:59.479:ERROR/AndroidRuntime(2096):android.graphics.drawable .GradientDrawable.inflate(GradientDrawable.java:647)
02-07 14:03:59.479:ERROR/AndroidRuntime(2096):android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
02- 07 14:03:59.479:ERROR/AndroidRuntime(2096):android.graphics.drawable.Drawable.crea teFromXml(Drawable.java:729)
02-07 14:03:59.479:ERROR/AndroidRuntime(2096):android.content.res.Resources.loadDrawable(Resources.java:1694)
02-07 14: 03:59.479:エラー/ AndroidRuntime(2096):... 29 more

どうすれば解決できますか? APIレベル= 8

答えて

0

あなたの属性を参照する代わりに"?backgroundTopColor""?attr/backgroundTopColor"を使用する必要があります。

はあなたに

NBをありがとうございます。

編集:間接的に色を参照するとどうなりますか?代わりにあなたのテーマでは、と言って:

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

あなたがこれを行う:

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

を次にcolors.xmlで、追加:

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

を私は何が起こっかもしれないことということであると思われます属性は明示的な色を必要としています。少なくとも私はあなたの輪郭を正確に描いていますが、色を私のテーマに直接入れるのではなく、間接的に色を参照している点が異なります。

+0

同じエラーが発生しました。それは動作しません。 ( – Premier

+0

別のアイデアで更新されました –

+0

どちらかの方法で作業することはできません。 –

関連する問題