BottomSheetDialog背景闪烁(华为)

华为手机dialog叠加时,弹出第二个dialog时会有背景闪烁

闪烁的主要原因是BottomSheetDialog的默认样式,它定义了默认dim行为.

我们可以通过使用bottomSheetDialogTheme定义自定义主题来解决上述问题:

backgroundDimEnabled :是否允许对话框变暗

<item name="android:backgroundDimEnabled">false</item>

以上是在网上找的方法非常开心以为解决了问题,结果QA同学发现需要遮罩的地方也没有遮罩了

通过查看源码得出的动态设置遮罩的方法

默认不需要遮罩:

<item name="android:backgroundDimEnabled">false</item>

代码里动态添加遮罩:

java代码:

public void setDim(Dialog dialog) {
    Window window = dialog.getWindow();
    if (window != null) {
        WindowManager.LayoutParams layoutParams = window.getAttributes();
        if (layoutParams == null) {
            layoutParams = new WindowManager.LayoutParams();
        }
        layoutParams.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
        window.setDimAmount(0.6f);
        window.setAttributes(layoutParams);
    }
}

kotlin代码: 

fun setDim() {
    val window = this.window
    if (window != null) {
        var params = window.attributes
        if (params == null) {
            params = WindowManager.LayoutParams()
        }
        params.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND
        window.setDimAmount(0.6f)
        window.attributes = params
    }
}

默认需要遮罩:

<item name="android:backgroundDimEnabled">false</item>

在代码里动态移除遮罩

            dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值