Dialog点击周边一定距离内,无法消失

Dialog点击周边一定距离内,无法消失_第1张图片

问题:继承Dialog自定义弹框,比如上面蓝色部分是弹框,弹框中已经设置setCancelable(true), 我们发现点击黑色区域,弹框会消失,但是点击灰色区域,弹框是不会消失的,而且弹框也不会响应任何点击事件。

解决方案如下:

View decorView=getWindow().getDecorView();
/**
     * 重写这玩意是为了解决如下问题: dialog周边一定距离内,无法关闭dialog。
     */
    override boolean onTouchEvent(MotionEvent event)  {
        if(decorView==null){
             return false;
           }
        if (isShowing && shouldCloseOnTouch(event, decorView)) {
            cancel()
            return true
        }
        return false
    }

    private Boolean shouldCloseOnTouch(MotionEvent event, View decorView)  {
        val x = event.x.toInt()
        val y = event.y.toInt()
        return (x <= 0 || y <= 0
                || x > decorView.width
                || y > decorView.height)
    }

你可能感兴趣的:(android,android)