我使用this解决方案和this库3>在onCreate()中的活动中实现了Bottom Sheet功能
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();
现在,我想显示底部工作表,点击按钮并以同样的方式想要隐藏底部工作表点击同一个按钮,如果已经可见
答案 0 :(得分:21)
要从您可以调用的片段中关闭 BottomSheetDialogFragment :
dismiss();
要显示或隐藏您可以简单调用的活动中的 BottomSheetDialogFragment :
bottomSheetDialogFragment.dismiss();//to hide it
bottomSheetDialogFragment.show(getSupportFragmentManager(),tag);// to show it
答案 1 :(得分:13)
在按钮的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();
}
}
});
答案 2 :(得分:2)
如果你想从片段中隐藏,那么使用
this.dismiss();
或
YOUR_FRAGMENT.this.dismiss()
答案 3 :(得分:0)
使用以下代码
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();
答案 4 :(得分:0)
要显示底表,请使用以下代码:
bottomSheetInfoBehavior.setHideable(false);
bottomSheetInfoBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
要隐藏底页,请使用以下代码:
bottomSheetInfoBehavior.setHideable(true);
bottomSheetInfoBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);