我可以将按钮显示为禁用并仍然可以听取点击吗?

时间:2012-06-01 15:25:59

标签: android

我想灰显一个按钮,因此它对用户来说似乎已禁用,但仍然会听取点击,这样我就可以向用户显示一条消息,说明按钮不适用的原因。

我想确保Android API是配置任何适当的标准禁用外观,而不是手动将按钮颜色设置为灰色等。这是最好的方法吗?

相关:Android - Listen to a disabled button

6 个答案:

答案 0 :(得分:9)

这是自定义按钮,可在禁用时显示触摸事件 它确实工作,并经过测试。专门为您设计

public class MyObservableButton extends Button
{
public MyObservableButton(Context context, AttributeSet attrs)
{
    super(context, attrs);
}

private IOnClickWhenEnabledListner mListner;

public void setOnClickWhenEnabledListener(IOnClickWhenEnabledListner listener) {
    mListner = listener;
}

private interface IOnClickWhenEnabledListner {
    public void onClickWhenEnabled();
}

@Override
public boolean onTouchEvent(MotionEvent event)
{       
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        if (!isEnabled() && mListner != null) {
            mListner.onClickWhenEnabled();
        }
    }

    return super.onTouchEvent(event);
}

}

这是从Android开发人员的角度来实现你想要的东西的正确方法。

没有问题,可以放弃所有Android的视图,并在xml文件中使用它们,而不是源代码。

祝你好运

答案 1 :(得分:5)

您也可以手动将Button的背景设置为默认值,以便禁用。但是保持启用按钮并以正常方式处理点击事件

这样的事情应该这样做:

mBtn.setBackgroundResource(android.R.drawable.btn_default_normal_disabled);

答案 2 :(得分:0)

我不是Android专家,所以可能有更好的方法,但是如何禁用按钮并覆盖将捕获事件的透明视图?

您可以将视图始终放在按钮下方,这样您只需更改z索引,或在需要时动态创建它。

答案 3 :(得分:0)

如果您的按钮位于通过PasswordChangeDone而非backgroundTint控制颜色的较新类型上,那么您应该这样做:

background

答案 4 :(得分:-1)

您还可以将Button的样式设置为灰显(对于按下和未按下的状态),然后setOnClickListener()正常,但使用onClick()方法消息说它不可点击。

答案 5 :(得分:-1)

由于按钮扩展了textview。您可以使用textview中的方法,如.setTextColor()或.setBackgroundColor()。

现在,您可以选择显示2个选项:

  • AlertDialog - 显示警报,但除非另有指定,否则不会自行关闭。
  • Toast - 在给定时间内显示文字并自行关闭。

接受你的选择。