直到现在,当我想从按下按钮停止用户,我将设置button.setClickable(false);
通常文本更改为某种灰色的(让用户知道该按钮被禁用)。 今天,我偶然发现了setEnabled()
属性。
所以我去的文件看方法的解释如下:
setEnabled(boolean enabled)
Set the enabled state of this view.
这是什么意思,甚至? 是什么使能状态/可点击状态和禁用状态/不可点击状态之间的区别? 可能有人请解释什么做什么,我以前做的,可以使用可点击属性和使用之间的区别setEnabled()
的财产? 应该怎么用时? 我搜索堆栈溢出,但找不到任何相关的。
这到底是什么意思?
引用维基百科页面“GUI窗口小部件” :
在应用程序的上下文中,微件可以被启用或在给定时间点被禁用。 启用的部件有对事件,如键盘或鼠标操作作出反应的能力。 不能对这类事件响应小组件被视为无效。 禁用小工具的外观通常是从启用插件不同; 禁用微件可以在较淡的颜色得出,或者可以以某种方式在视觉上遮蔽。 查看图像为例的权利。
这个概念已经存在了几十年,并可以在大多数GUI框架中找到。
是什么使能状态/可点击状态和禁用状态/不可点击状态之间的区别?
在Android中,一个小部件,不可点击不会响应点击事件。 禁用的窗口小部件,不仅无法点击,但同时也直观地表明它被禁用。
?“..since它使按钮视觉‘已禁用’,它是如何改变其视觉:你是什么意思?
是什么让一个Button
的外观和像一个响应Button
是它的背景,这是一个StateListDrawable
。 有用于禁用状态特定图像。
所以基本上启用虚假不来任何回应响应,当在运行时设置一个可点击的虚假仍响应,并相信我,我只是尝试它。
作为迪利普说,setClickable不工作,如果在运行时设置。 这里有一个技巧,使它的工作:
ToggleButton toggle = ...
toggle.setOnTouchListener(new ToggleButton.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// If true is returned, the event is eated by the TouchListener
return !v.isClickable();
}
});
视图还可以响应外部键盘,方向垫(远程/游戏控制器),和辅助设备( 开关 , 屏幕阅读器 )。
的差别是在上面列出,但有一个尖端。 使用setOnClickListener后setClickable()()。 因为这:
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}
setClickable公共无效setClickable(布尔点击)
它启用或禁用点击事件的特定视图。 当一个观点是点击它会改变其状态在每次点击“按”。 如果查看该属性被禁用,那么它不会改变其状态。
的setEnabled公共无效的setEnabled(能布尔)
它设置这一观点。如果特定视图的启用状态设置为启用,然后在参数传递true否则通过假
我没有看到其他地方提到的一大区别是有重叠的意见。 以期可点击= TRUE并启用= false将不会允许你按下它后视图。 但随着点击= false一个视图可以让你按下它后视图。