web-dev-qa-db-ja.com

ボトムシートを非表示にできません、Android

bottom-sheet で問題が発生しています。これは、アクティビティを開くと、ビューがブロックされるためです enter image description here

これは、XML属性が350dpの高さで bottom-sheet を宣言しているために発生すると思います。

<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 offを宣言する方法はありますか? (StateをSTATE_COLLAPSEDに設定しようとしましたが、機能しませんでした)。以下は、ボトムシートと相互作用する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) {

            }
        });
7
alb

これを書いてください:

    mBottomSheetBehavior.setPeekHeight(0);
9
ALBPT

まず、属性を追加する必要があります

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">

そして、あなたは使用して一番下のシートを隠すことができます

mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN)

ではなく

mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED)

cOLLAPSEDの状態はHIDDENとEXPANDEDの間にあり、彼の高さは属性で指定する必要があります。

app:behavior_peekHeight="200dp"
13

私の場合、ボトムシートを非表示にすることができず、ビューの上に配置されました。そうだと分かった animateLayoutChanges = "true"レイアウトファイルでこの問題が発生していました。

2
Marius Kohmann

onCreate内にこれらの行を追加すると、ボトムバーを非表示にできます

mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
mBottomSheetBehavior.setHideable(true); //Important to add
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); //Important to add
1
Kishore Reddy

私の場合、BottomSheetDialogを使用していました。

app:behavior_hideable-属性は、下にスワイプしたときに下部シートが非表示になるかどうかを決定するために使用されます。つまり、ピークの高さが設定されていない場合、下部のシートの上部は画面から外れます。

app:behavior_peekHeight-下部シートが表示されるピクセル数を表すために使用される属性値。

<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/bottom_sheet_container"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:elevation="10dp"
Android:orientation="vertical"
Android:background="@color/colorPrimaryDerived"
app:layout_behavior="@string/bottom_sheet_behavior"
app:behavior_hideable="true"
app:behavior_peekHeight="0dp"> ........... </LinearLayout>

PeekHeightを50dpに設定しました。また、ピークの高さは、200dpに設定したbottomSheetレイアウトの高さ自体とは関係ありません(たとえばのみ)。

peek

下部のシートが展開されている場合は、XMLビューアで変更を表示できます。展開されている場合は、xmlレイアウトからapp:behavior_peekHeight = 0dpを追加すると、非表示になり、現在の状態も通知されます。

1
RoCk RoCk

折りたたまれたときの設定app:behavior_hideable = "false"

0