Android:View中的performClick()触发条件
先看看performClick()源码:
public
boolean
performClick()
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
if
(mOnClickListener
null
)
playSoundEffect(SoundEffectConstants.CLICK);
mOnClickListener.onClick(
this
);
return
true
;
}
return
false
;
}
|
需要注意的是,如果同时使用了
view.setOnTouchListener()方法,则有可能存在拦截
view.
performClick()的响应事件,因为当view.OnTouchEvent()在
event.getAction() == MotionEvent.ACTION_DOWN时返回false,系统会认为view不需要处理Touch事件,则后续的Touch事件(move、up、click)就不会被传进来,所以也不会触发
view.
performClick(),而
view.setOnTouchListener()相当于是重写了
view.OnTouchEvent(),所以在写view的
TouchListener处理时,需要留意view是否存在点击事件监听,如果有,则在适当的位置使用view
.
performClick()触发点击事件
。