关于Dialog点击周边一定距离内,无法消失的问题
2020-11-12 本文已影响0人
一夜游神
开发中遇到的问题,记录一下
image.png问题:继承Dialog自定义弹框,比如上面蓝色部分是弹框,弹框中已经设置setCancelable(true), 我们发现点击黑色区域,弹框会消失,但是点击灰色区域,弹框是不会消失的,而且弹框也不会响应任何点击事件。
解决方案如下:
/**
* 重写这玩意是为了解决如下问题: dialog周边一定距离内,无法关闭dialog。
*/
override fun onTouchEvent(event: MotionEvent): Boolean {
val window = window ?: return false
val decorView = window.decorView
if (isShowing && shouldCloseOnTouch(event, decorView)) {
cancel()
return true
}
return false
}
private fun shouldCloseOnTouch(event: MotionEvent, decorView: View): Boolean {
val x = event.x.toInt()
val y = event.y.toInt()
return (x <= 0 || y <= 0
|| x > decorView.width
|| y > decorView.height)
}