场景
一个textview,xml中设置了clickable="false",然后在activity中设置监听事件; 默认希望他不能点击,等时机成熟在把他设置成可点击
<TextView
android:id="@+id/tv_submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:text="确定上传"/>
mSubmitBtn.setOnClickListener(v -> {
// todo: 点击后的操作
});
问题
上面这段代码运行后,textview默认还是可以点击的
原因
设置setOnClickListener后,在它的源码中,将其默认改为可点击
/**
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}
解决
在点击方法中加是否相应的判断
mSubmitBtn.setOnClickListener(v -> {
if (enableNextBtn()) {
// todo: 点击后的操作
}
});