如何设置XML中的Clickable属性?

时间:2018-04-26 12:28:06

标签: android android-studio-3.0

我在Button中有一个Activity

<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,为什么click事件仍然有效? 有什么事情可以覆盖吗?

2 个答案:

答案 0 :(得分:4)

  

尽管将clickable设置为false,为什么click事件应该有效?

Write-Host重置该标志。

setClickListener

和是public void More ...setOnClickListener(OnClickListener l) { 2318 if (!isClickable()) { 2319 setClickable(true); 2320 } 2321 mOnClickListener = l; 2322 } 内部调用android:onClick="onClickEvent"

答案 1 :(得分:1)

根据the most upvoted answer here,由于全局setOnClickListener方法,clickable可以返回true。

目前无法测试,但也许您可以创建两个单独的侦听器,并在需要时切换按钮当前使用的侦听器。因此,当您要禁用单击它时,您可以切换到不执行任何操作的侦听器。

对我来说看起来有点矫枉过正,最干净的方法是在我看来使用setEnabled(false),但如果你真的不想使用setEnabled,请尝试使用听众。