3

2 つの異なるアクティビティで、同じグラデーション ドローアブルを異なる色で使用したいと考えています。グラデーションの色をアクティビティのテーマに次のように参照すると思います。

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: エラー/AndroidRuntime(2096): 原因: java.lang.UnsupportedOperationException: 色に変換できません: type=0x2
02-07 14:03:59.479: エラー/AndroidRuntime(2096) : android.content.res.TypedArray.getColor(TypedArray.java:326)
02-07 14:03:59.479: エラー/AndroidRuntime(2096): android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:647) )
02-07 14:03:59.479: エラー/AndroidRuntime(2096): android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
02-07 14:03:59.479: エラー/AndroidRuntime(2096): android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
02-07 14:03:59.479: エラー/AndroidRuntime(2096): android.content.res.Resources.loadDrawable(Resources.java:1694)
02-07 14:03:59.479: エラー/AndroidRuntime(2096): ... 29 詳細

どうすればこれを解決できますか?

ありがとうございました

注: API レベル = 8

4

1 に答える 1

0

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

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

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

これをして:

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

次に、colors.xmlに次を追加します。

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

何が起こっているのかは、属性が明示的な色を期待していることだと思います。少なくとも、テーマに正しく色を入れるのではなく、常に間接的に色を参照することを除いて、私はあなたが概説したことを正確に実行しました。

于 2011-02-07T14:33:39.370 に答える