BottomSheet
の非表示状態を設定しようとしていますが、機能しません。どうしたの?
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_HIDDEN);
アクティビティ/フラグメントの開始時に下のシートを非表示にするときに、これを追加することを忘れないでください
bottomSheetBehavior =BottomSheetBehavior.from(bottom_sheet_view_here);
bottomSheetBehavior.setHideable(true);//Important to add
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
mBottomSheetBehaviour.setPeekHeight(0);
これを使用すると非表示になります。
以下を試してください:
LinearLayout bottomSheetViewgroup
= (LinearLayout) findViewById(R.id.bottom_sheet);
BottomSheetBehavior bottomSheetBehavior =
BottomSheetBehavior.from(bottomSheetViewgroup);
次に使用します
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
アクティビティのライフサイクルの早い段階でこれを実行していないことを確認してください。 onCreate
または同様のもので行う必要がある場合は、ビューに投稿するRunnable
に入れてみてください。
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_HIDDEN);
}
});
これは最もクリーンなソリューションではありませんが、避けられない場合もあります。
タブ付きアクティビティのようなものを使用する場合は、フラグメントでボトムシートレイアウトを非表示にすることができます。
フラグメントビューはアクティビティビューの後に作成されるため、これは可能です。
class "activity"
public void hideBottomSheet(){
sheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
}
class "fragment"
onCreateView()
((YourActivity.class)getActivity()).hideBottomSheet();
BottomSheetBehaviour.STATE_COLLAPSED
をお試しください
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_COLLAPSED);
別の方法-この方法ではFragments
は必要ありません:
boolean init = true;
layoutBottomSheet.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
if(init)hideBottomSheet();
init=false;
}
});