关于Dialog点击周边一定距离内,无法消失的问题

开发中遇到的问题,记录一下

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)
    }

你可能感兴趣的:(关于Dialog点击周边一定距离内,无法消失的问题)