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

时间:2017-02-17 08:57:26

标签: android material-design bottom-sheet

我使用this解决方案和this在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();

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

5 个答案:

答案 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);