透明度のある背景画像を持つ ImageButton があります。デフォルトでは、Holo.Light テーマにより、ボタンは透明度ピクセルがある場所に灰色の背景を取得します。メソッドでボタンの背景色を透明に設定してみましたsetBackgroundColor(Color.TRANSPARENT)
。それはうまく機能し、私が必要とすることを実行しますが、フォーカス/プレス時にボタンが水色ではなくなり、かなりフラットに見えます(周囲に境界線がないため、画像のように見えます)。
ここで説明されているようにセレクターを割り当てることができることをグーグルで調べましたが、それはボタンの状態ごとに画像を指定する必要があり、それをしたくないことを意味します。テーマからフォーカス/押された色を継承したいのですが、通常のボタンの背景 (押されていない/フォーカスされていないとき) を灰色ではなく透明に上書きします。どうすればそれを達成できますか?? 成功しなかった多くの異なる組み合わせを試したので、実際の例を提供してください。
編集 助けてくれてありがとう。各ボタンのフォーカス状態と押された状態で同じ画像を再作成する必要なく、これを機能させる方法を見つけました!
これが私の解決策です:
私のボタンは次のように定義されています:
<ImageButton
android:id="@+id/ImageButton05"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/button" />
また、バックグラウンド XML ファイル (button.xml というタイトル) は次のように定義されています。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:drawable="@drawable/btn_default_pressed_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item android:state_focused="true">
<layer-list>
<item android:drawable="@drawable/btn_default_focused_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item android:state_hovered="true">
<layer-list>
<item android:drawable="@drawable/btn_default_focused_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable="@drawable/btn_default_normal_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
</selector>