長年のstackoverflowリーダー、初めての質問。私が抱えている問題はばかげているようですが、それを説明する情報が見つかりません。
私はAndroidプログラミングに不慣れで、カスタムボタンの背景を持つプロジェクトに取り組んでいます。私は次のように見えるさまざまなボタンに状態リストドローアブルを使用しています:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/button_pressed_background" android:gravity="center"/>
android:state_pressed="true"
</item>
<item>
<bitmap android:src="@drawable/button_focused_background" android:gravity="center"/>
android:state_focused="true"
</item>
<item>
<bitmap android:src="@drawable/button_standard_background" android:gravity="center"/>
android:state_pressed="false"
android:state_focused="false"
</item>
</selector>
ボタンが宣言されているxmlに、android:background="@drawable/button_drawable"
button_drawable.xmlが描画可能な状態リストである行を追加するだけです。
簡単そうに見えますが、すべての場合において、ボタン<item>
は、状態に関係なく、描画可能な状態リストの最初のセクションにリストされている背景で表示されます。実際、上記の例では、最初の<item>
セクションを変更してandroid:state_pressed="false"
代わりに含めることができますが、button_pressed_background
それでも表示されます。これは、すべてのボタンの状態が同時にtrueとfalseであるかのようです。
エミュレーターを使用して開発していますが、AVDエミュレーターとOracleVirtualBoxで実行されているAndroidx86の両方でこの動作が見られます。なぜこれが起こるのか考えていますか?