我在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事件仍然有效? 有什么事情可以覆盖吗?
答案 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,请尝试使用听众。