this solutionおよび this libraryを使用して、onCreate()のアクティビティ内にボトムシート機能を実装しました。
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();
ここで、ボタンをクリックするとボトムシートを表示し、同じ方法で同じボタンをクリックするとボトムシートを非表示にしたいのですが、すでに表示されている場合
ボタンのonClick()
内でsheet.show()
を使用します。
次に、それを却下する場合は、sheet.dismiss()
;を使用します。
以下に可能な解決策を示します。
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();
}
}
});
フラグメント内からBottomSheetDialogFragmentを閉じるには、次のように呼び出すことができます。
dismiss();
アクティビティのBottomSheetDialogFragmentを表示または非表示にするには、単に呼び出すことができます:
bottomSheetDialogFragment.dismiss();//to hide it
bottomSheetDialogFragment.show(getSupportFragmentManager(),tag);// to show it
次のコードを使用します
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();