デフォルトの画像を持つボタンを作成しようとしていますが、ボタンを押すと新しい画像に切り替わります。私はthis tutorial
一緒に使用しましthis question
たが、うまくいきません。
これは私のinfo_button_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/ic_menu_info_details2" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/ic_menu_info_details2" /> <!-- focused -->
<item android:drawable="@drawable/ic_menu_info_details" /> <!-- default -->
</selector>
これは私のImageButtonのコードです:
<ImageButton
android:id="@+id/apModeInfoButton"
android:layout_width="0dip"
android:background="@null"
android:layout_height="match_parent"
android:layout_weight="1.15"
android:clickable="true"
android:src="@drawable/info_button_selector" />
ボタンはずっと初期状態のままic_menu_info_details
です。
info_button_selector.xml
ファイルを次のように変更しました。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/ic_menu_info_details2" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/ic_menu_info_details2" /> <!-- focused -->
<item android:drawable="@drawable/ic_menu_info_details2" /> <!-- default -->
</selector>
画像はずっと表示されていましたic_menu_info_details2
が、これは予想通りです。これは、ボタンが描画可能なリソースとして XML ファイルを使用していることを示していますが、ボタンを押しても画像が変わらないのはなぜでしょうか?
編集
以下の Joss の回答を使用しても、画像は変わらず、奇妙な方法で引き伸ばされます。注: 2 番目の画像がサイズの 60% にスケーリングされていることを除いて、両方の画像はまったく同じです。これは機能していることを意味している可能性がありますが、ビューが引き伸ばされているためわかりません。
<ImageButton
android:id="@+id/apModeInfoButton"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="1.15"
android:clickable="true"
android:background="@drawable/info_button_selector" />
これらの XML ファイルの両方のバージョンと、画像のさまざまな組み合わせを使用しました。すべての組み合わせで、同じサイズの画像が変化することはありませんでした。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/ic_menu_info_details" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/ic_menu_info_details" /> <!-- focused -->
<item android:drawable="@drawable/ic_menu_info_details" /> <!-- default -->
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/ic_menu_info_details2" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/ic_menu_info_details2" /> <!-- focused -->
<item android:drawable="@drawable/ic_menu_info_details2" /> <!-- default -->
</selector>