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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容