web-dev-qa-db-ja.com

ボタンをクリックした後、ボタンを押したままにするにはどうすればよいですか?

可能性のある複製:
Android。ボタンによって作成されたアクションが終了するまで、ボタンを押された状態に維持するにはどうすればよいですか?

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

助けがありますか?

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

このようなもの?

32
Nikitas

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

mycodes_Button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        mycodes_Button.setPressed(true);
        return true;
    }
});
36
VenkaReddy

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

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

<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以降でのみ利用可能です。

43
beetstra

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

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

プログラムでタッチモードを終了することもできますが、お勧めしません。少し慣れると、タッチモードはユーザーにより良いエクスペリエンスを提供します。

5
kgiannakakis