单击后如何按下按钮?

时间:2011-01-20 12:50:16

标签: android button pressed

  

可能重复:
  Android. How do I keep a button displayed as PRESSED until the action created by that button is finished?

我有一个按钮,当我按下它时,我想要它按下它(按下Froyo上的绿色)。

任何帮助?

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

这样的东西?

3 个答案:

答案 0 :(得分:42)

我遇到了这个带有自定义背景的按钮的问题,最后使用了selected state。所有观点都可以使用该状态。

要使用此功能,您必须将自定义按钮背景定义为state list

<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
  }
});

activated state更符合预期含义,但仅适用于Android 3.x及更高版本。

答案 1 :(得分:35)

使用以下代码。这很有用。

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

答案 2 :(得分:4)

ToggleButton会满足您的需求吗?

根据你的评论判断你似乎并不知道Touch Mode。在这种模式中,这是大多数事情的默认模式,没有焦点(这是你想要实现的目标) )并且没有选定的项目。

你可以尝试以编程方式退出触摸模式,但我不推荐它。经过一段时间的习惯后,触摸模式将为用户提供更好的体验。