拦截鼠标点击事件 屏蔽webview的点击事件
原创
©著作权归作者所有:来自51CTO博客作者xwg11的原创作品,请联系作者获取转载授权,否则将追究法律责任
我有个需求,因为鼠标点击事件会击穿当前控件,作用到被遮盖的webview
解决方案:
根据点击事件是从最外层的布局一层层往内分发的,那么只要把webview的父容器 比如relativelayout的点击事件分发禁掉就可以实现,禁止webview被点击的操作,我写了一个FrameLayout来存放webView
代码:
var isDispatch=true
class MyFrameLayout:FrameLayout {
constructor(context: Context):super(context)
constructor(context: Context, attributeSet: AttributeSet):super(context,attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr:Int):super(context,attributeSet,defStyleAttr)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
override fun dispatchGenericFocusedEvent(event: MotionEvent?): Boolean {
if(isDispatch) {
return super.dispatchGenericFocusedEvent(event)
}else{
return false
}
}
override fun dispatchGenericMotionEvent(event: MotionEvent?): Boolean {
if(isDispatch) {
return super.dispatchGenericMotionEvent(event)
}else{
return false
}
}
override fun dispatchGenericPointerEvent(event: MotionEvent?): Boolean {
if(isDispatch) {
return super.dispatchGenericPointerEvent(event)
}else{
return false
}
}
}
当你不想让webview被点击的时候,只要isDispatch设置成false就行