Я хочу создать BottomSheetDialogFragment
с закругленными углами.
Что я сделал, чтобы достичь этого:
<style name="AppTheme.TransparentBottomSheetStyle" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
<item name="android:background">@android:color/transparent</item>
</style>
<style name="AppTheme.BottomSheetDialogTheme" parent="Theme.MaterialComponents.Light.Dialog">
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:colorBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="bottomSheetStyle">@style/AppTheme.TransparentBottomSheetStyle</item>
</style>
backdrop_shape.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00FF00"/>
<corners
android:topLeftRadius="24dp"
android:topRightRadius="24dp"/>
</shape>
И макет нижнего листа:
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backdrop_shape"
android:paddingBottom="18dp">
И код:
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
setStyle(BottomSheetDialogFragment.STYLE_NORMAL, R.style.AppTheme_BottomSheetDialogTheme)
dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
}
Это прекрасно работает с темой AppCompat
, но не с MaterialComponents
:
Как вы можете видеть, есть белый фон (я думаю, это родительский FrameLayout с идентификатором design_bottom_sheet).
И самое интересное, что когда я вращаюсьустройство (а затем поверните его обратно), оно становится прозрачным, как я хотел:
Это ошибка или функция?Как это исправить?
Примечание: Я перепробовал все решения, которые были размещены на SO и других сайтах, они также не работают на MaterialComponents
.