BottomSheetDialog 填充背景而不是使其变暗

BottomSheetDialog fills the background instead of dimming it

提问人:EkorrTi 提问时间:11/16/2023 最后编辑:EkorrTi 更新时间:11/20/2023 访问量:36

问:

enter image description here

如您所见,对话框顶部的部分完全是白色的,并且没有像默认情况下那样变暗

我尝试弄乱样式,使windowBackground和Background透明,也可以以编程方式进行。我尝试在一个新的干净项目中制作它,它无需任何修改即可正常工作,据我所知,它应该是默认行为,并且不是模拟器/设备问题,因为它适用于新项目。代码如下

itemNotification.setOnClickListener {
    notificationsBottomSheetDialog.show()
}
notificationsBottomSheetBinding = FragmentNotificationsBottomSheetBinding.inflate(layoutInflater)
notificationsBottomSheetDialog = BottomSheetDialog(requireContext(), style.CustomBottomSheetDialog)
notificationsBottomSheetDialog.setCanceledOnTouchOutside(false)
notificationsBottomSheetDialog.setContentView(notificationsBottomSheetBinding.root)

底页布局 .xml

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/bSheet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingHorizontal="@dimen/core_padding_16"
    android:paddingTop="@dimen/core_vertical_margin_16"
    android:paddingBottom="@dimen/core_vertical_margin">
<other stuff but not empty>

所有款式

CustomBottomSheetDialog:
    parent = ThemeOverlay.MaterialComponents.BottomSheetDialog
    bottomSheetStyle = @style/CustomBottomSheet => @style/CustomBottomSheet

CustomBottomSheet:
    parent = Widget.MaterialComponents.BottomSheet
    shapeAppearanceOverlay = @style/CustomShapeAppearanceBottomSheetDialog

CustomShapeAppearanceBottomSheetDialog:
    cornerFamily = rounded
    cornerSizeTopRight = 16dp
    cornerSizeTopLeft = 16dp
    cornerSizeBottomRight = 0dp
    cornerSizeBottomLeft = 0dp
    android:windowSoftInputMode = adjustResize

即使在新应用程序中,它也没有没有样式的顶部圆角,在没有样式的情况下初始化它仍然具有相同的白色背景

如果这有所作为,则从片段调用该对话框

android kotlin android-layout android-bottomsheetdialog

评论

0赞 C.F.G 11/20/2023
您应该向我们展示您正在使用的样式。即什么是?CustomBottomSheetDialog
0赞 C.F.G 11/20/2023
为样式添加背景色。(我不熟悉撰写模式)。CustomBottomSheet:

答:

0赞 Anirudh Goud 11/17/2023 #1

你可以尝试在on中设置以这种方式创建样式

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setStyle(DialogFragment.STYLE_NORMAL,R.style.SaveBottomSheetDialogStyle) }

然后在styles.xml

<style name="SaveBottomSheetDialogStyle" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/ModalStyle.Transparent</item>
    <item name="colorAccent">@color/red</item>
</style>

XML 可以根据需要将 background.xml 文件添加到视图中

评论

0赞 EkorrTi 11/20/2023
这需要我制作一个 BSFragmentDialog,对吗?在这里,我使用一个简单的BSDialog
0赞 C.F.G 11/18/2023 #2

尝试添加以下内容:

app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"

添加到您的 Bottomsheet 根布局。

评论

0赞 EkorrTi 11/20/2023
这无济于事
0赞 C.F.G 11/20/2023
尝试通过添加来更改背面颜色并查看结果。android:background="@color/red"
0赞 EkorrTi 11/20/2023
我澄清了样式,即使颜色没有改变,这仍然无济于事