java - 无法隐藏 Bottom Sheet ,Android

标签 java android bottom-sheet

我的 有问题因为当我打开它正在进行的 Activity 时,挡住了视线 enter image description here

我认为发生这种情况是因为 XML 属性声明了 高度为 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,因为下次我尝试打开 时, 没有 ,因为高度是0dp,所以不会显示任何东西。 我的问题是,有没有办法声明 离开? (我试图将 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 Sheet
mBottomSheetBehavior.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/

相关文章:

java - 为什么PreparedStatement比Statement快很多?

java - Java HotSpot共享内存文件空间不足有什么影响?

java - 在线程的帮助下读取 URL 页面 - Android

Android GPS 在多行 SD 卡内的文本文件中启用/禁用时间保存

flutter - Flutter Dart Bottomsheet错误上下文=上下文

android - java.lang.IllegalArgumentException : The view is not associated with BottomSheetBehavior 异常

java - Hibernate @SecondaryTable - 指定主表的外键

java - 如何在行为级别上测试我的 Java/Android 代码?

java - 尝试使用带有有效购买 token 的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

android - 模态 Bottom Sheet 在全屏 Activity 中显示导航栏