web-dev-qa-db-ja.com

ボトムシートの非表示状態

BottomSheetの非表示状態を設定しようとしていますが、機能しません。どうしたの?

 bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
 bottomBar.setState(BottomSheetBehavior.STATE_HIDDEN);
9
Nick

アクティビティ/フラグメントの開始時に下のシートを非表示にするときに、これを追加することを忘れないでください

bottomSheetBehavior =BottomSheetBehavior.from(bottom_sheet_view_here);
bottomSheetBehavior.setHideable(true);//Important to add
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
26
zohaib khaliq
mBottomSheetBehaviour.setPeekHeight(0);

これを使用すると非表示になります。

6
Akshay Shah

以下を試してください:

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);
    }
 });

これは最もクリーンなソリューションではありませんが、避けられない場合もあります。

1
Dmitry Brant

タブ付きアクティビティのようなものを使用する場合は、フラグメントでボトムシートレイアウトを非表示にすることができます。

フラグメントビューはアクティビティビューの後に作成されるため、これは可能です。

class "activity"
   public void hideBottomSheet(){ 
      sheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
   }

class "fragment"
   onCreateView()
      ((YourActivity.class)getActivity()).hideBottomSheet();
0
EmreArslan

BottomSheetBehaviour.STATE_COLLAPSEDをお試しください

bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_COLLAPSED);
0

別の方法-この方法では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;
        }
    });
0
EmreArslan