J'ai implémenté la fonctionnalité Bottom Sheet dans mon activité dans onCreate () en utilisant la solution this et this
sheet = new BottomSheet.Builder(this, R.style.BottomSheet_Dialog)
.title("New")
.grid() // <-- important part
.sheet(R.menu.menu_bottom_sheet)
.listener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO
}
}).build();
Maintenant, je voudrais montrer la feuille inférieure, en cliquant sur le bouton et de la même manière, je veux masquer la feuille inférieure en cliquant sur le même bouton, si elle est déjà visible.
Dans votre onClick()
du bouton, utilisez: sheet.show()
.
Ensuite, lorsque vous souhaitez le supprimer, utilisez sheet.dismiss()
;
Ci-dessous une solution possible:
BottomSheet sheet = new BottomSheet.Builder(...).build();
Button button = (Button)findViewById(R.id.mybutton);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//you can use isShowing() because BottomSheet inherit from Dialog class
if (sheet.isShowing()){
sheet.dismiss();
} else {
sheet.show();
}
}
});
Pour fermer BottomSheetDialogFragment de l'intérieur du fragment, vous pouvez appeler:
dismiss();
Pour afficher ou masquer le BottomSheetDialogFragment de l'activité, vous pouvez simplement appeler:
bottomSheetDialogFragment.dismiss();//to hide it
bottomSheetDialogFragment.show(getSupportFragmentManager(),tag);// to show it
utilisez le code suivant
new BottomSheet.Builder(getActivity()).title("Your Title here").sheet(R.menu.bottom_sheet).listener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case R.id.cancel:
dialog.cancel();
break;
case R.id.view:
//Todo view code here
dialog.cancel();
break;
}
}
}).show();