Android 单击按钮后,如何保持按钮按下状态?

Android 单击按钮后,如何保持按钮按下状态?,android,button,pressed,Android,Button,Pressed,可能重复: 我有一个按钮,我希望当我按下它时,它保持按下状态(Froyo上有绿色) 有什么帮助吗 mycodes_Button = (Button) findViewById(R.id.mycodes); ... if (saved_Button.isPressed()) { saved_Button.setFocusable(true); } 像这样的东西?适合你的需要吗 从您的评论来看,您似乎没有意识到。在这种模式下,这是大多数事情的默认模式,没有焦点(这是您试图实现的),也没有

可能重复:

我有一个按钮,我希望当我按下它时,它保持按下状态(Froyo上有绿色)

有什么帮助吗

mycodes_Button = (Button) findViewById(R.id.mycodes);
...
if (saved_Button.isPressed())
{
    saved_Button.setFocusable(true);
}
像这样的东西?

适合你的需要吗

从您的评论来看,您似乎没有意识到。在这种模式下,这是大多数事情的默认模式,没有焦点(这是您试图实现的),也没有选定的项目


您可以尝试以编程方式退出触摸模式,但我不建议这样做。经过一段时间的习惯后,触摸模式将为用户提供更好的体验。

使用以下代码。这很有用

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

我有一个自定义背景按钮的问题,最后使用了。该状态可用于所有视图

要使用此选项,您必须将自定义按钮背景定义为:

在代码中,您可以切换到onClick侦听器中的(取消)选定状态:

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

更好地匹配预期的含义,但仅适用于Android 3.x及更高版本。

您能告诉我,您在这段代码中遇到了什么问题吗?单击按钮后,它不会保持按下状态(我的意思是绿色),它会返回到原始状态,即灰色。单击按钮后,它不会保持按下状态(我的意思是绿色),它返回到原始状态,灰色的。我需要正常按钮,而不是切换按钮。谢谢你的回答!实际上我需要正常的按钮kostas。谢谢你的回答(ενχαρισττώγιατηναπάντηση!)一个普通的按钮不能保持在按下状态-它只能保持在聚焦状态。嗯,我认为这是一样的…我的意思是这就是我想要的…我想要当一个按钮按下后保持按下或聚焦。你可能不知道触摸模式。请看我编辑的答案。这基本上是有效的,但你应该提到,你失去了正常的按钮功能性。因为您在此处返回
true
,所以不会执行
onClick
内容。因此实际上您必须触发该内容,您希望按钮在此
onTouch
方法中执行。顺便说一句:您应该使用
v.setPressed(true)
。现在不需要单独处理
onClick
内容。只需使用
v.performClick()
onTouch
中,这有一个小问题。我认为当活动暂停时,按钮会被取消按下。这对我来说是一个麻烦,因为我显示了一个进度对话框,还导航到其他活动,并希望在这些情况下按钮保持按下状态。isActivated()methode仅适用于API级别11及更高版本。出于与旧android操作系统版本相似的原因,我不建议使用它。API级别11等于android 3.x,这是没有人在手机上使用的。@phlipp是对的,我在测试中注意到了这一点(键入此答案后)并切换到“选定”,但忘记更新我的答案。谢谢beetstra。我注意到按下的
解决方案中有一个缺陷,所以我使用了您的解决方案。目前为止,它更简单、更完美。
...
<Button android:background="@drawable/button_bg" ... />
...
myButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    v.setSelected(true);
    // normal click action here
  }
});