[解決済み] drawable から style 属性を参照するには?
2022-11-17 08:19:53
質問
アプリケーションで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>
この方法はとてもうまくいき、いくつかのテーマを簡単に作成したり変更したりすることができます。問題は ビューでのみ使用可能で、ドローアブルでは使用できないようです。 .
例えば、レイアウト内のViewから値を参照することは動作します。
<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
も試しましたが、同じことが起こります。
どうすればいいのでしょうか?また、なぜ Views では動作するのに、Drawables では動作しないのでしょうか。この制限をどこにも見つけることができません。 ドキュメント ...
どのように解決するのですか?
私の経験では、XML drawable で属性を参照することはできません。
テーマを作るために必要なのは
- 1つのテーマにつき1つのXML drawableを作成します。
-
必要な色を直接ドローアブルに取り込みます。
@color
タグまたは #RGB フォーマットで、必要な色を直接描画可能にします。
で描画可能な属性を作成します。 attrs.xml .
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Attributes must be lowercase as we want to use them for drawables -->
<attr name="my_drawable" format="reference" />
</resources>
描画可能なファイルを theme.xml に追加します。 .
<style name="MyTheme" parent="@android:style/Theme.NoTitleBar">
<item name="my_drawable">@drawable/my_drawable</item>
</style>
属性を使って、レイアウトの中で描画可能なものを参照します。
<TextView android:background="?my_drawable" />
関連
-
[解決済み] TextViewでテキストを水平・垂直方向にセンタリングするには?
-
[解決済み] DrawableをBitmapに変換する方法は?
-
[解決済み] Android XML drawable ファイルに円形を定義する方法を教えてください。
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] アンドロイドでビットマップをDrawableに変換する方法は?
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] 通知をクリックした後にアプリケーションを開く
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] FABアイコンの色を設定する
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?