J'essaie de définir l'état caché pour BottomSheet
, mais cela ne fonctionne pas. Quel est le problème?
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_HIDDEN);
N'oubliez pas d'ajouter ceci en masquant la feuille du bas au début de l'activité/du fragment
bottomSheetBehavior =BottomSheetBehavior.from(bottom_sheet_view_here);
bottomSheetBehavior.setHideable(true);//Important to add
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
mBottomSheetBehaviour.setPeekHeight(0);
utilisez ceci et il se cachera.
essayez ce qui suit:
LinearLayout bottomSheetViewgroup
= (LinearLayout) findViewById(R.id.bottom_sheet);
BottomSheetBehavior bottomSheetBehavior =
BottomSheetBehavior.from(bottomSheetViewgroup);
puis utiliser
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
Assurez-vous de ne pas le faire trop tôt dans le cycle de vie de votre activité. Si vous devez le faire dans onCreate
ou quelque chose de similaire, essayez de le placer dans un Runnable
que vous publiez dans une vue, comme suit:
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_HIDDEN);
}
});
Ce n'est pas la solution la plus propre, mais c'est parfois inévitable.
Si vous utilisez quelque chose comme une activité à onglets, vous pouvez masquer votre incrustation de feuille dans votre fragment.
Je pense que cela est possible, car la vue fragmentée est créée après la vue activité.
class "activity"
public void hideBottomSheet(){
sheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
}
class "fragment"
onCreateView()
((YourActivity.class)getActivity()).hideBottomSheet();
Essayez BottomSheetBehaviour.STATE_COLLAPSED
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_COLLAPSED);
Une autre façon - Ainsi, vous n’avez pas besoin de 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;
}
});