マウスクリックイベントをブロックしてwebviewのクリックイベントをブロックします
マウスクリックイベントが現在のコントロールを破壊し、隠されたwebviewに作用するため、必要があります.
ソリューション:
クリックイベントが最外層のレイアウトから次々と内側に配布されることにより、relativelayoutのようなwebviewの親コンテナのクリックイベント配布を禁止すれば実現でき、webviewがクリックされる操作を禁止するFrameLayoutを書いてwebViewを保存します
コード:
WebviewをクリックしたくないときはisDispatchをfalseに設定すればいいです
ソリューション:
クリックイベントが最外層のレイアウトから次々と内側に配布されることにより、relativelayoutのようなwebviewの親コンテナのクリックイベント配布を禁止すれば実現でき、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に設定すればいいです