setEnabled()vs setClickable(),有什么区别?

Emi*_*Adz 68 android clickable android-button

到现在为止,当我想阻止用户按下按钮时,我会设置 button.setClickable(false);并通常将文本更改为某种灰色(让用户知道按钮被禁用).今天我偶然发现了这家setEnabled()酒店.

所以我去了文档,看看方法的解释如下:

setEnabled(boolean enabled)
   Set the enabled state of this view.
Run Code Online (Sandbox Code Playgroud)

这甚至意味着什么?启用状态/可点击状态和禁用状态/不可点击状态之间有什么区别?有人可以解释一下我以前做过什么,使用可点击的属性和使用setEnabled()属性之间的区别是什么?什么时候应该用?我搜索了StackOverflow但找不到任何相关内容.提前致谢.

Com*_*are 76

这到底是什么意思?

引用Wikipedia页面的"GUI小部件":

在应用程序的上下文中,可以在给定时间点启用或禁用窗口小部件.启用的窗口小部件具有响应事件的能力,例如击键或鼠标操作.无法响应此类事件的窗口小部件被视为已禁用.禁用窗口小部件的外观通常与启用的窗口小部件不同; 禁用的小部件可以以较浅的颜色绘制,或者可以以某种方式在视觉上模糊.有关示例,请参见右侧的图像.

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

启用状态/可点击状态和禁用状态/不可点击状态之间有什么区别?

在Android中,无法点击的窗口小部件不会响应点击事件.禁用的窗口小部件不仅不可单击,而且还可视地指示它已被禁用.

你是什​​么意思:"因为它使按钮在视觉上"禁用"?它如何在视觉上改变它?

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

  • @EmilAdz:如果更改文本颜色,或者更改按钮背景,则需要在"ColorStateList"或"StateListDrawable"中为禁用状态添加适当的条目.当调用`setEnabled(false)`或在布局中使用`android:enabled ="false"`时,将使用该条目. (2认同)

小智 5

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


Tre*_*vor 5

我在其他地方没有看到的一个很大的区别是重叠的视图。一个带有 clickable=true 和 enabled=false 的视图不允许你按下它后面的一个视图。但是带有 clickable=false 的 View 将允许您按下它后面的 View。