35

重複の可能性:
Android. そのボタンによって作成されたアクションが終了するまで、ボタンを PRESSED として表示し続けるにはどうすればよいですか?

ボタンがあり、それを押すと、押したままになります (Froyo の緑色)。

何か助けはありますか?

mycodes_Button = (Button) findViewById(R.id.mycodes);
...
if (saved_Button.isPressed())
{
    saved_Button.setFocusable(true);
}

このようなもの?

4

3 に答える 3

48

カスタムの背景を持つボタンでこの問題が発生し、これに選択された状態を使用することになりました。その状態は、すべてのビューで使用できます。

これを使用するには、カスタム ボタンの背景を状態リストとして定義する必要があります。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="false" android:state_focused="false" 
     android:state_pressed="false"><bitmap ... /></item>
  <item android:state_selected="true"><bitmap ... /></item>
  <item android:state_focused="true"><bitmap ... /></item>
  <item android:state_pressed="true"><bitmap ... /></item>
</selector>

次に、その背景を使用するには/res/drawable/button_bg.xml、レイアウトファイルにあるとしましょう。次を使用します。

...
<Button android:background="@drawable/button_bg" ... />
...

コードでは、onClick リスナーで (非) 選択状態に切り替えることができます。

myButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    v.setSelected(true);
    // normal click action here
  }
});

アクティブ化された状態は、意図した意味によりよく一致しますが、Android 3.x 以降でのみ使用できます。

于 2012-01-05T18:55:52.393 に答える
41

次のコードを使用します。便利です。

mycodes_Button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        mycodes_Button.setPressed(true);
        return true;
    }
});
于 2011-01-20T13:18:50.127 に答える
6

ToggleButtonはあなたのニーズに合いますか?

コメントから判断すると、タッチモードに気付いていないようです。ほとんどの場合のデフォルトであるこのモードでは、フォーカス(達成しようとしていること)も選択されたアイテムもありません。

プログラムでタッチモードを終了することもできますが、お勧めしません。少し慣れると、タッチモードでユーザーのエクスペリエンスが大幅に向上します。

于 2011-01-20T12:53:21.560 に答える