我想灰显一个按钮,因此它对用户来说似乎已禁用,但仍然会听取点击,这样我就可以向用户显示一条消息,说明按钮不适用的原因。
我想确保Android API是配置任何适当的标准禁用外观,而不是手动将按钮颜色设置为灰色等。这是最好的方法吗?
答案 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个选项:
接受你的选择。