2
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/key" />
<item
android:state_pressed="true"
android:drawable="@drawable/key_pressed" />
<item
android:state_checkable="true"
android:drawable="@drawable/key_function" />
<item
android:state_checkable="true"
android:state_pressed="true"
android:drawable="@drawable/key_pressed" />
<item
android:state_checkable="true"
android:state_checked="true"
android:drawable="@drawable/key_function" />
<item
android:state_checkable="true"
android:state_checked="true"
android:state_pressed="true"
android:drawable="@drawable/key_pressed" />
</selector>

テスト結果:

通常のキー->@drawable / key

通常のキーが押された->@drawable / key_pressed

スティッキーキー->@drawable / key_function

スティッキーキーが押されました->@drawable /key_function<---ここに問題があります

4

1 に答える 1

1

選択は「ベスト マッチ」に基づくのではなく、単純に州の最小基準を満たす最初のアイテムに基づいて行われます。

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

これらの状態の1つが現在の状態と一致しているため、間違ったドローアブルです

<item
android:state_checkable="true"
android:drawable="@drawable/key_function" />  
<item
android:state_checkable="true"
android:state_checked="true"
android:drawable="@drawable/key_function" />

入れてみる

<item
android:state_checkable="true"
android:state_checked="true"
android:state_pressed="true"
android:drawable="@drawable/key_pressed" />

上部に配置するか、前のケースに基準を追加します。

于 2012-09-09T19:52:44.947 に答える