5
ドローアブルからスタイル属性を参照する方法は?
アプリケーションに2つの選択可能なテーマを用意したい。そのために、次のような属性をいくつか定義しました。 <attr format="color" name="item_background" /> 次に、次のように両方のテーマを作成しました。 <style name="ThemeA"> <item name="item_background">#123456</item> </style> <style name="ThemeB"> <item name="item_background">#ABCDEF</item> </style> この方法はすばらしいので、いくつかのテーマを簡単に作成および変更できます。問題は、ビューでのみ使用でき、Drawableでは使用できないように見えることです。 たとえば、レイアウト内のビューからの値の参照は機能します。 <TextView android:background="?item_background" /> しかし、Drawableで同じことをしても、次のことはできません。 <shape android:shape="rectangle"> <solid android:color="?item_background" /> </shape> アプリケーションを実行すると、次のエラーが発生します。 java.lang.UnsupportedOperationException: Can't convert to color: type=0x2 ?item_backgroundハードコードされた色を使用する代わりに、それは機能しますが、テーマを使用できません。私も試しました?attr:item_backgroundが、同じことが起こります。 どうすればこれができますか?そしてなぜそれはビューでは機能するがドローアブルでは機能しないのですか?この制限はドキュメントのどこにも見つかりません...