如何在持久底部 sheet 向上滑动时实现深色透明背景?

How to achieve dark transparent background on persistent bottom sheet swipe up?

我在我的 android 应用程序中使用

实现了持久底部 sheet
    <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:behavior_hideable="false"
    app:behavior_peekHeight="85dp"
    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
      ...
    </androidx.constraintlayout.widget.ConstraintLayout>

ConstraintLayout 中。它工作得很好。我可以向上滑动以在 STATE_EXPANDED 中打开它,也可以向下滑动到 STATE_COLLAPSED

现在我的问题是: 当我展开底部 sheet 它与主要内容重叠,看起来很混乱。为了解决这个问题,我想调暗背景以突出显示扩展的持久底部 sheet,就像在模态底部 sheet 中一样(参见图片...)。

当我的持久底部 sheet 变成状态 STATE_EXPANDED 时,有没有办法调暗背景?理想情况下,动画流畅,背景变暗,我向上滑动的次数越多。但是我只想在持久底部 sheet 在 STATE_EXPANDED 时有一个透明的深色背景。在 STATE_COLLAPSED 中,背景应该是正常的而不是暗淡的。

我没有在互联网上找到解决方案。谁能帮帮我?或提供信息或经验?

感谢您的回答和帮助。似乎没有官方的方法来实现解释的行为。 经过一些编码后,我有了一个可行的解决方案。我 post 我自己采用这种方法,以帮助也在寻找此功能解决方案的人。

我在 BottomSheet 后面放置了一个视图作为背景层:

        <View
        android:id="@+id/bottomSheetBackgroundLayer"
        android:background="#99000000"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

然后我在 bottomSheetCallback 中更改此视图的 alpha 值,如下所示:

        override fun onStateChanged(bottomSheet: View, @BottomSheetBehavior.State newState: Int) {}

        override fun onSlide(bottomSheet: View, slideOffset: Float) {
            bottomSheetBackgroundView.setAlpha(slideOffset)
        }