Android 如何在XML中设置可单击属性?
我在Android 如何在XML中设置可单击属性?,android,android-studio-3.0,Android,Android Studio 3.0,我在活动中有一个按钮: <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:focu
活动中有一个按钮
:
<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" />
尽管在xml中将clickable属性设置为false,但为什么click事件仍然可以工作?
有什么东西覆盖了它吗
尽管将clickable设置为false,但为什么click事件应该工作
setClickListener
重置该标志
public void More ...setOnClickListener(OnClickListener l) {
2318 if (!isClickable()) {
2319 setClickable(true);
2320 }
2321 mOnClickListener = l;
2322 }
还有yesandroid:onClick=“onClickEvent”
内部调用setOnClickListener
根据,clickable返回true,因为使用了全局setOnClickListener方法
目前无法测试,但可能您可以创建两个单独的侦听器,并在需要时切换按钮当前使用的侦听器。因此,当您想禁用单击时,可以切换到不执行任何操作的侦听器
在我看来,这看起来有点过分了,在我看来,最干净的方法是使用setEnabled(false)
,但如果你真的不想使用setEnabled,请尝试使用侦听器。android:clickable=“false”删除此选项one@Abhinav古普塔,请仔细阅读问题。帕祖,你的问题很不清楚。如果XML有问题,您需要澄清是谁/什么生成了XML。在问题主体中,您放置了XML代码段和Javascript代码段。为什么在XML中设置“OnClick”&在哪里?或者在哪里?如果不清楚下面的人是如何理解和回答的,请阅读@filiprem。你很幸运:-)你能解释更多吗?我不明白你的意思。为什么“onClickEvent”仍然有效?如何防止它工作?不要设置click listner(或以编程方式将其设置为null)或在活动/片段中保持状态,并且再次调用android:onClick=“onClickEvent”
,调用View.setOnClickListener
,调用setClickable(true)代码>。它可能会被使用,但会被视图覆盖。setOnClickListener
源代码非常有用,而且它几乎是不言自明的+1
public void More ...setOnClickListener(OnClickListener l) {
2318 if (!isClickable()) {
2319 setClickable(true);
2320 }
2321 mOnClickListener = l;
2322 }