[解決済み] プログラムによるセレクタ画像の置き換え
2022-05-16 07:50:59
質問
セレクタに設定された描画可能な画像リソースを持つImageViewを持っています。プログラムでセレクタにアクセスし、ハイライト状態と非ハイライト状態の画像を変更するにはどうすればよいでしょうか。
以下はセレクタのコードです。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/iconSelector">
<!-- pressed -->
<item android:state_pressed="true" android:drawable="@drawable/btn_icon_hl" />
<!-- focused -->
<item android:state_focused="true" android:drawable="@drawable/btn_icon_hl" />
<!-- default -->
<item android:drawable="@drawable/btn_icon" />
</selector>
を置き換えることができるようにしたい。
btn_icon_hl
と
btn_icon
を他の画像で表示します。
どのように解決するのですか?
私が見つけた限りでは (私も似たようなことを試してみました)、StateListDrawable がすでに定義された後に、単一の状態を変更する方法はありません。しかし、コードを通じて新しいものを定義することはできます。
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed},
getResources().getDrawable(R.drawable.pressed));
states.addState(new int[] {android.R.attr.state_focused},
getResources().getDrawable(R.drawable.focused));
states.addState(new int[] { },
getResources().getDrawable(R.drawable.normal));
imageView.setImageDrawable(states);
そして、2つ手元に置いておけばいいし、必要に応じて違うものを作ればいいのです。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] エラー Android Studioで名前'default'を持つ構成が見つかりません。
-
[解決済み] 純正CPU使用率データの読み方
-
[解決済み] EclipseでADTを更新するにはどうしたらいいですか?
-
[解決済み] AndroidでNode.Jsを動作させる
-
[解決済み] PreferenceFragmentCompatはpreferenceThemeが設定されている必要があります。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] 開発者コンソールでのベータ版/アルファ版テストについての説明が必要です。
-
[解決済み] アンドロイドでビットマップのサイズを変更する最もメモリ効率の良い方法とは?
-
[解決済み] Android 6.0でBluetooth Low Energyスキャンを使用するには位置情報を有効にする必要があります。
-
[解決済み] EclipseでADTを更新するにはどうしたらいいですか?
-
[解決済み] ビルドフレーバーによってアプリ名が異なる?
-
[解決済み] Android: 複数の選択オプションを持つポップアップを作成する
-
[解決済み] Androidの縦長(回転)ラベルについて
-
[解決済み] Android Studio 1.0とエラー "Library projects cannot set applicationId "について
-
[解決済み] AndroidにおけるProgressive Web Appsとネイティブアプリの違いについて [終了しました]