画像ボタンの背景を変更したいです。基本的に、私が持っている画像は、透明な背景では見栄えがよく、透明でない背景を持つ画像がたくさんある場合は少しお粗末です。
これは簡単なはずです -android:background
ボタンの色を (drawable を介して) 透明色に変更するだけです: click_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"><color android:color="#FF008080" />
</item>
<item android:state_pressed="true"><color android:color="#FF008080" />
</item>
<item><color android:color="#00000000" />
</item>
</selector>
次に、ボタン
<ImageButton
android:id="@+id/players"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:background="@drawable/click_background"
android:contentDescription="@string/players"
android:src="@drawable/speaker_tile" />
問題state_focussed
は、実際には背景のとバージョンを保持したいということですstate_pressed
(これはテーマから派生したものだと思います)。ボタンが押されたときにテーマで通常使用されるボタンが押されたとき、または選択されたときに背景が表示されるようにしたいと思います (そして、まったく同じ色/ドローアブルで表示されます)。
次のいずれかを行う方法があるかどうか疑問に思っていましたが、これまでのところ、どちらにも何も見つかりませんでした。
あるものから別のものを継承するセレクターを定義します (テーマが別のものから継承できる方法に似ています)。
まったく新しいセレクターを作成しますが、テーマの色/ドローアブルを XML で参照 し、イメージ ボタン
state_focussed
に使用します。編集:このオプションは廃止されたようです。属性が必要でしたが、ドローアブルからそれらを参照することはできません。こちらをご覧くださいstate_pressed
可能であれば、プログラマティック Java ではなく、宣言型 XML でこれを行いたいと考えています。