在項(xiàng)目開發(fā)過(guò)程中,設(shè)置了點(diǎn)擊事件并設(shè)置了setClickable為false,控件仍可以點(diǎn)擊,原因如下:
/**
* 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;
}
View源碼的setOnClickListener中,如果控件不可點(diǎn)擊會(huì)將控件改變狀態(tài)為setClickable(true)。
解決辦法:setClickable放在setOnClickListener方法之后即可。