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

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

作者: 一夜游神 | 来源:发表于2020-11-12 16:38 被阅读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)
        }
    
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/krypbktx.html