以编程方式显示和隐藏底部工作表

Sop*_*hie 19 android material-design bottom-sheet

我使用解决方案和库在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();
Run Code Online (Sandbox Code Playgroud)

现在,我想显示底部工作表,点击按钮并以同样的方式想要隐藏底部工作表点击同一个按钮,如果已经可见

Mal*_*azi 29

要从片段内部关闭BottomSheetDialogFragment,您可以调用:

dismiss();
Run Code Online (Sandbox Code Playgroud)

要从活动中显示或隐藏BottomSheetDialogFragment,您只需调用:

bottomSheetDialogFragment.dismiss();//to hide it
bottomSheetDialogFragment.show(getSupportFragmentManager(),tag);// to show it
Run Code Online (Sandbox Code Playgroud)


Mat*_*Pag 19

在你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();    
        }
    }
});
Run Code Online (Sandbox Code Playgroud)


小智 13

要显示底部工作表,请使用以下代码:

bottomSheetInfoBehavior.setHideable(false);
bottomSheetInfoBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
Run Code Online (Sandbox Code Playgroud)

要隐藏底部工作表,请使用以下代码:

bottomSheetInfoBehavior.setHideable(true);
bottomSheetInfoBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
Run Code Online (Sandbox Code Playgroud)


Pav*_*ati 9

如果您想在 Fragment 中隐藏,请使用

this.dismiss();
Run Code Online (Sandbox Code Playgroud)

或者

YOUR_FRAGMENT.this.dismiss()
Run Code Online (Sandbox Code Playgroud)