更改BottomSheetDialogFragment的遮罩颜色

6

如何更改BottomSheetDialogFragment的遮罩颜色 - 即暗层覆盖颜色?

您可以使用drawerLayout.setScrimColor(ContextCompat.getColor(this, R.color.dimOverlay))DrawerLayout进行此操作。

enter image description here


1
那实际上是Dialog固有的调暗。我认为没有什么简单的方法可以改变那个颜色。然而,BottomSheetDialog覆盖整个屏幕,所以你应该能够将其背景设置为任何你喜欢的颜色;例如,在你的BottomSheetDialogFragment子类中,https://drive.google.com/file/d/1vItTnGv89Dqnz9EueBIp0s4Jpyd2ctpN/view?usp=drivesdk。我现在无法真正测试它。`dimAmount`设置有些可选,因为默认的调暗应该只是作为一个alpha乘数器,我想。你可以试着玩一下。 - Mike M.
1
有所不同,你可以看到自定义背景可绘制物件向上滑动出现,而默认背景则是淡入。 - Jordan H
dimAmount的表现也不如预期,即使是0.0001f也相当不透明。 - Jordan H
啊,是的,关于滑入,这很有道理。对于底部工作表,使用默认动画从底部向上滑动是很自然的。等我有时间时,我会看看我们能做些什么。如果我们将其更改为淡入,希望它不会太丑陋。我不确定您所说的“暗淡”具体是什么意思,但您可以完全关闭它 - 例如,dimAmount = 0f,或者 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) - 并使用背景颜色和透明度来控制所有内容。我只是提供了一些信息,方便您参考。没有它可能更容易,也更好。 - Mike M.
谢谢,那个方法可行!为了澄清我之前的陈述,dimAmount = 0.1f并不能将背景颜色的透明度设置为10%,正如你所期望的那样。是的,0代表完全透明,1代表完全不透明,但是一些非常小的数字并不是真正的透明,它仍然相当不透明,因此无法获得例如10%的透明度。看起来这是一个加权比例。 - Jordan H
显示剩余2条评论
2个回答

3
你可以更改Window的背景,并设置透明颜色。
@Override
public @NotNull Dialog onCreateDialog(Bundle savedInstanceState){
    BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
    Window window = dialog.getWindow();
    window.setBackgroundDrawableResource(R.color.colorPrimaryTransparent);
    return dialog;
}

0
除了使用“setBackgroundDrawableResource()”之外, 你还可以使用“setBackgroundDrawable()”来设置窗口的颜色。
 dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.parseColor("#6680bebe")))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接