当设计库更新到24.2.0时,BottomSheetBehavior不起作用

Yin*_*udi 10 android android-support-library bottom-sheet

BottomSheetBehavior正常工作

compile 'com.android.support:design:24.1.1'
Run Code Online (Sandbox Code Playgroud)

但是当我将它更新到24.2.0时,它不起作用.这是一个错误吗?这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    >

    <LinearLayout
        android:id="@+id/llScroll"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:orientation="vertical"
        android:background="@color/blue_1"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

Fnd*_*oid 36

STATE_COLLAPSED:隐藏底部工作表的一部分

STATE_HIDDEN:隐藏完整的底页

在支持库24.2.0中,您必须设置峰值高度以指示折叠时底页显示的像素数.

因此,如果您希望将其折叠并隐藏,则可以在初始化BottomSheetBehavior后添加如下代码:

mBottomSheetBehavior.setPeekHeight(0);
Run Code Online (Sandbox Code Playgroud)

这意味着当底部页面折叠时,将显示其高度的0像素.

或者如果需要,你可以让它消失,使用这样的代码:

mBottomSheetBehavior.setHideable(true);
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
Run Code Online (Sandbox Code Playgroud)


coh*_*air 5

更新于 2016 年 8 月 30 日

接受的答案STATE_HIDDEN解释了和之间的区别STATE_COLLAPSED以及如何在 中正确使用两者com.android.support:design:24.2.0

截至2016年8月20日

尽管这似乎确实是一个错误com.android.support:design:24.2.0,但您可以使用以下方法暂时解决它BottomSheetBehavior.STATE_HIDDEN

mBehavior.setHideable(true);
mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

这仍然会用动画关闭底部工作表。

我不确定STATE_COLLAPSED和之间的实际区别STATE_HIDDEN是什么,并且文档没什么帮助,但在它真正修复之前我认为STATE_HIDDEN还可以。