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    }
还有yes
android: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    }