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

Jef*_*rod 13 android

我想将一个按钮变灰,以便它对用户显示为禁用,但仍然会听取点击,这样我就可以向用户显示一条消息,说明该按钮不适用的原因.

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

相关:Android - 收听已禁用的按钮

Tal*_*nel 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);
}

}
Run Code Online (Sandbox Code Playgroud)

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

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

祝好运

  • 您可以避免额外的侦听器,只需使用OnClickListener.在onTouchEvent()中添加performClick() (2认同)

Foa*_*Guy 5

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

这样的事情应该这样做:

mBtn.setBackgroundResource(android.R.drawable.btn_default_normal_disabled);
Run Code Online (Sandbox Code Playgroud)


gar*_*ph0 0

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

您可以让视图始终位于按钮下方,这样您只需要更改 z-index,或者在需要时动态创建它。