web-dev-qa-db-ja.com

デザインライブラリを24.2.0に更新すると、BottomSheetBehaviorが機能しなくなります

BottomSheetBehaviorはで正しく機能します

compile 'com.Android.support:design:24.1.1'

しかし、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>
11
Yin Shudi

STATE_COLLAPSED:下部シートの一部を非表示にします

STATE_HIDDEN:完全なボトムシートを非表示にします

サポートライブラリ24.2.0では、折りたたんだときに下部シートに表示するピクセル数を示すために、ピークの高さを設定する必要があります。

したがって、折りたたんで非表示にする場合は、BottomSheetBehaviorを初期化した後で次のようなコードを追加できます。

mBottomSheetBehavior.setPeekHeight(0);

つまり、一番下のシートが折りたたまれると、その高さの0ピクセルが表示されます。

または、必要に応じて非表示にすることもできます。次のようなコードを使用してください。

mBottomSheetBehavior.setHideable(true);
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
37
Fndroid

2016年8月30日更新

受け入れられた答えSTATE_HIDDENSTATE_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);

これでも、アニメーションで下部のシートが閉じます。

STATE_COLLAPSEDSTATE_HIDDENの実際の違いはわかりません。また、 ドキュメント はあまり役に立ちませんが、実際に修正されるまではSTATE_HIDDENだと思います。大丈夫です。

4
cohenadair