[解決済み] Androidです。フィルタ付きStateListDrawableを作成するためのDrawableのクローニング
2023-01-09 03:55:08
質問
フレームワークで、以下のような場合に任意のDrawableをハイライト表示させる機能を作りたい。 が押されたとき/フォーカスされたとき/選択されたとき/その他 .
私の関数はDrawableを受け取り、StateListDrawableを返します。デフォルトの状態はDrawable自身であり、その状態は
android.R.attr.state_pressed
の状態は同じ Drawable であり、ただ
setColorFilter
.
私の問題は、drawable をクローンして、フィルタを適用した別のインスタンスを作成することができないことです。以下は、私が達成しようとしていることです。
StateListDrawable makeHighlightable(Drawable drawable)
{
StateListDrawable res = new StateListDrawable();
Drawable clone = drawable.clone(); // how do I do this??
clone.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
res.addState(new int[] {android.R.attr.state_pressed}, clone);
res.addState(new int[] { }, drawable);
return res;
}
クローンしない場合は、明らかに両方の状態にフィルターが適用されます。試しに
mutate()
を弄ってみましたが、役に立ちません...。
何かいい方法はありませんか?
更新しました。
受け入れられた答えは、確かにdrawableをクローンします。しかし、私の一般的な関数が別の問題で失敗したため、それは私を助けませんでした。StateList に drawable を追加するとき、それはすべてのフィルタを失うようです。
どのように解決するのですか?
以下を試してみてください。
Drawable clone = drawable.getConstantState().newDrawable();
関連
-
[解決済み] Android XML drawable ファイルに円形を定義する方法を教えてください。
-
[解決済み] Androidでファイルをダウンロードし、ProgressDialogで進捗を表示する。
-
[解決済み] Android標準のボタンを色違いに
-
[解決済み] Androidで背景を20%透明にする方法
-
[解決済み] 初期テキストが「Select One」のAndroidスピナーを作るには?
-
[解決済み] Androidのdrawableディレクトリはサブディレクトリを含むことができますか?
-
[解決済み] アンドロイドでビットマップをDrawableに変換する方法は?
-
[解決済み】Androidでプログラム的に背景を描画可能にする方法
-
[解決済み] Android - 上部のみ角丸のドローアブル
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。
最新
-
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 Webview - キャッシュを完全に削除する
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理
-
[解決済み] Androidでボタンクリックの効果を設定するには?