如何在 XML 中设置 Clickable 属性?
How setting Clickable attribute in XML works?
我在 Activity
中有一个 Button
:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test"
android:onClick="onClickEvent"
android:clickable="false"
android:focusable="false" />
和一个方法:
public void onClickEvent(View view) {
Toast.makeText(this, "Hey!!", Toast.LENGTH_SHORT).show();
}
尽管在 xml 中将 clickable 属性设置为 false,为什么点击事件仍然有效?
有什么东西覆盖它吗?
In spite of setting clickable to false, why click event should work?
setClickListener
重置该标志。
public void More ...setOnClickListener(OnClickListener l) {
2318 if (!isClickable()) {
2319 setClickable(true);
2320 }
2321 mOnClickListener = l;
2322 }
是的 android:onClick="onClickEvent"
内部调用 setOnClickListener
根据the most upvoted answer here,由于全局 setOnClickListener 方法,clickable 返回 true。
目前无法测试,但也许您可以创建两个单独的侦听器,并在需要时切换按钮当前使用的侦听器。因此,当您想要禁用点击它时,您可以切换到一个什么都不做的监听器。
对我来说有点矫枉过正,我认为最干净的方法是使用 setEnabled(false)
,但如果您真的不想使用 setEnabled,请尝试使用 listeners。
我在 Activity
中有一个 Button
:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test"
android:onClick="onClickEvent"
android:clickable="false"
android:focusable="false" />
和一个方法:
public void onClickEvent(View view) {
Toast.makeText(this, "Hey!!", Toast.LENGTH_SHORT).show();
}
尽管在 xml 中将 clickable 属性设置为 false,为什么点击事件仍然有效? 有什么东西覆盖它吗?
In spite of setting clickable to false, why click event should work?
setClickListener
重置该标志。
public void More ...setOnClickListener(OnClickListener l) {
2318 if (!isClickable()) {
2319 setClickable(true);
2320 }
2321 mOnClickListener = l;
2322 }
是的 android:onClick="onClickEvent"
内部调用 setOnClickListener
根据the most upvoted answer here,由于全局 setOnClickListener 方法,clickable 返回 true。
目前无法测试,但也许您可以创建两个单独的侦听器,并在需要时切换按钮当前使用的侦听器。因此,当您想要禁用点击它时,您可以切换到一个什么都不做的监听器。
对我来说有点矫枉过正,我认为最干净的方法是使用 setEnabled(false)
,但如果您真的不想使用 setEnabled,请尝试使用 listeners。