如何在持久底部 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)
}
我在我的 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)
}