的setEnabled()VS setClickable(),有什么区别?(setEnabled()

2019-07-23 05:56发布

直到现在,当我想从按下按钮停止用户,我将设置button.setClickable(false); 通常文本更改为某种灰色的(让用户知道该按钮被禁用)。 今天,我偶然发现了setEnabled()属性。

所以我去的文件看方法的解释如下:

setEnabled(boolean enabled)
   Set the enabled state of this view.

这是什么意思,甚至? 是什么使能状态/可点击状态和禁用状态/不可点击状态之间的区别? 可能有人请解释什么做什么,我以前做的,可以使用可点击属性和使用之间的区别setEnabled()的财产? 应该怎么用时? 我搜索堆栈溢出,但找不到任何相关的。

Answer 1:

这到底是什么意思?

引用维基百科页面“GUI窗口小部件” :

在应用程序的上下文中,微件可以被启用或在给定时间点被禁用。 启用的部件有对事件,如​​键盘或鼠标操作作出反应的能力。 不能对这类事件响应小组件被视为无效。 禁用小工具的外观通常是从启用插件不同; 禁用微件可以在较淡的颜色得出,或者可以以某种方式在视觉上遮蔽。 查看图像为例的权利。

这个概念已经存在了几十年,并可以在大多数GUI框架中找到。

是什么使能状态/可点击状态和禁用状态/不可点击状态之间的区别?

在Android中,一个小部件,不可点击不会响应点击事件。 禁用的窗口小部件,不仅无法点击,但同时也直观地表明它被禁用。

?“..since它使按钮视觉‘已禁用’,它是如何改变其视觉:你是什么意思?

是什么让一个Button的外观和像一个响应Button是它的背景,这是一个StateListDrawable 。 有用于禁用状态特定图像。



Answer 2:

所以基本上启用虚假不来任何回应响应,当在运行时设置一个可点击的虚假仍响应,并相信我,我只是尝试它。



Answer 3:

作为迪利普说,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();
  }
});


Answer 4:

视图还可以响应外部键盘,方向垫(远程/游戏控制器),和辅助设备( 开关 , 屏幕阅读器 )。



Answer 5:

的差别是在上面列出,但有一个尖端。 使用setOnClickListener后setClickable()()。 因为这:

public void setOnClickListener(@Nullable OnClickListener l) {
    if (!isClickable()) {
        setClickable(true);
    }
    getListenerInfo().mOnClickListener = l;
}


Answer 6:

setClickable公共无效setClickable(布尔点击)

它启用或禁用点击事件的特定视图。 当一个观点是点击它会改变其状态在每次点击“按”。 如果查看该属性被禁用,那么它不会改变其状态。

的setEnabled公共无效的setEnabled(能布尔)

它设置这一观点。如果特定视图的启用状态设置为启用,然后在参数传递true否则通过假



Answer 7:

我没有看到其他地方提到的一大区别是有重叠的意见。 以期可点击= TRUE并启用= false将不会允许你按下它后视图。 但随着点击= false一个视图可以让你按下它后视图。



文章来源: setEnabled() vs setClickable(), what is the difference?