bottom-sheet で問題が発生しています。これは、アクティビティを開くと、ビューがブロックされるためです
これは、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) {
}
});
これを書いてください:
mBottomSheetBehavior.setPeekHeight(0);
まず、属性を追加する必要があります
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"
私の場合、ボトムシートを非表示にすることができず、ビューの上に配置されました。そうだと分かった animateLayoutChanges = "true"
レイアウトファイルでこの問題が発生していました。
onCreate
内にこれらの行を追加すると、ボトムバーを非表示にできます
mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
mBottomSheetBehavior.setHideable(true); //Important to add
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); //Important to add
私の場合、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レイアウトの高さ自体とは関係ありません(たとえばのみ)。
下部のシートが展開されている場合は、XMLビューアで変更を表示できます。展開されている場合は、xmlレイアウトからapp:behavior_peekHeight = 0dp
を追加すると、非表示になり、現在の状態も通知されます。
折りたたまれたときの設定app:behavior_hideable = "false"