我的 bottom-sheet 有问题因为当我打开它正在进行的 Activity 时,挡住了视线
我认为发生这种情况是因为 XML 属性声明了 bottom-sheet高度为 350dp:
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="350dp"
android:background="?android:attr/windowBackground"
android:clipToPadding="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
问题是,我无法将该值更改为 0dp,因为下次我尝试打开 bottom-sheet 时, 没有 bottom-sheet ,因为高度是0dp,所以不会显示任何东西。 我的问题是,有没有办法声明 bottom-sheet离开? (我试图将 setState 设置为 STATE_COLLAPSED 但没有成功)。 Bellow 是与 Bottom Sheet 交互的 java 代码。 java :
View bottomSheet = findViewById( R.id.bottom_sheet );
mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
//mBottomSheetBehavior.setPeekHeight(0);
//mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
//mBottomSheetBehavior.isHideable();
}
}
@Override
public void onSlide(View bottomSheet, float slideOffset) {
}
});
最佳答案
首先你必须添加属性
app:behavior_hideable="true"
在你的
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="350dp"
android:background="?android:attr/windowBackground"
android:clipToPadding="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
然后您可以使用
隐藏 Bottom SheetmBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN)
而不是
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED)
COLLAPSED 状态介于 HIDDEN 和 EXPANDED 之间,其高度必须由属性指定:
app:behavior_peekHeight="200dp"
关于java - 无法隐藏 Bottom Sheet ,Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42959780/