4

ユーザーがボタンに触れている限り、1 つの画像が表示され、ユーザーがボタンを離すとデフォルトの画像に戻るようにしようとしています。

これを実現するためにセレクターを使用しようとしています:

<?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/record_on" />
  <item android:state_focused="true"
    android:drawable="@drawable/record_off" />
  <item android:drawable="@drawable/record_off" />
</selector>

セレクターでいくつかのことを試しましたが、常に同じ動作を生成します。ボタンはデフォルトの画像で始まり、それを押すと「record_on」画像に変わり、デフォルトの画像に戻ることはありません手放したとき。

ImageButton でこの種の動作を取得する方法はありますか、それとも別のものを使用する必要がありますか?

4

2 に答える 2

0

onTouch()実装でタッチイベントを時期尚早に消費していたことがわかりました。ACTION_UPイベントを見たとき、trueを返すことでそれを消費していたため、セレクターがイベントを取得する前にイベントの伝播が停止されました。代わりにfalseを返すことにより、セレクターの動作が開始され、画像がデフォルトに戻ります。

言い換えれば、私はn00bです。

最初は気づかなかったのは、ACTION_DOWNイベントがうまく機能しているようで、それも消費していたからです。他のすべてのイベントに対してfalseを返していたため、ボタンの画像が変更されたのはACTION_DOWNイベントではなく、ACTION_MOVEイベントであることが後でわかりました。

于 2010-02-09T21:21:43.163 に答える
0

You might want to look at the standard XML resource for a Button/ImageButton, which appears to be $ANDROID_HOME/platforms/$PLATFORM/data/res/drawable/btn_default.xml (where $ANDROID_HOME is where you have your SDK installed and $PLATFORM is whatever API version you're interested in).

Their "normal" state is:

<item android:state_enabled="true"
    android:drawable="@drawable/btn_default_normal" />
于 2010-02-07T02:13:06.930 に答える