【发布时间】:2020-05-17 21:22:09
【问题描述】:
我在我的应用程序中添加了一个 BottomSheet。我在 onCreate 方法启动时将其隐藏。稍后它仅在需要时显示。我遇到的问题是当用户存在应用程序(底部工作表展开)并稍后返回应用程序时,Activity 被重新创建并且底部工作表保持在屏幕上 - 即使它在 onCreate 中将其设置为隐藏。
BottomSheetBehavior.from(myBottomSheet).state = BottomSheetBehavior.STATE_HIDDEN
目前我找到的唯一解决方案是覆盖 onRestoreInstanceState 回调,并且不要让 Activity 恢复它的状态。
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
// FIXME Temporary fix for BottomSheet not hiding on app recreate
//super.onRestoreInstanceState(savedInstanceState)
}
我确信一定有更好的解决方案。什么可能导致这个问题?
布局定义:
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/myBottomSheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
app:behavior_hideable="true"
app:behavior_peekHeight="90dp"
app:layout_behavior="@string/bottom_sheet_behavior">
</androidx.coordinatorlayout.widget.CoordinatorLayout>
【问题讨论】:
-
BottomSheetFragment 或底部工作表行为?在行为的情况下,在使用工作表的布局中将 id 设置为根?
-
@AndreClassen 底部工作表行为。你的问题有点含糊,但无论我在哪里设置底部工作表的 ID,它都不起作用。