Показать и скрыть нижний лист программно

Я реализовал функциональность нижнего листа в своей деятельности в 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();

Теперь я хотел бы показать нижний лист при нажатии кнопки и таким же образом хочу скрыть нижний лист при нажатии той же кнопки, если он уже виден


person Sophie    schedule 17.02.2017    source источник
comment
Здравствуйте, сестра, я думаю, вы можете сделать это с помощью sheet.show() и sheet.dismiss() в зависимости от того, видимо ли представление или нет.   -  person rohitanand    schedule 17.02.2017


Ответы (5)


Внутри вашей 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();    
        }
    }
});
person MatPag    schedule 17.02.2017

Чтобы закрыть BottomSheetDialogFragment изнутри фрагмента, вы можете вызвать:

dismiss();

Чтобы показать или скрыть BottomSheetDialogFragment от действия, вы можете просто вызвать:

bottomSheetDialogFragment.dismiss();//to hide it
bottomSheetDialogFragment.show(getSupportFragmentManager(),tag);// to show it
person Malek Hijazi    schedule 25.05.2017
comment
Я использую bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED), чтобы показать это. - person Someone Somewhere; 11.08.2020

Для отображения нижнего листа используйте этот код:

bottomSheetInfoBehavior.setHideable(false);
bottomSheetInfoBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);

Для скрытия нижнего листа используйте этот код:

bottomSheetInfoBehavior.setHideable(true);
bottomSheetInfoBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
person Ajay Sharvesh    schedule 26.09.2019

Если вы хотите скрыться внутри фрагмента, используйте

this.dismiss();

or

YOUR_FRAGMENT.this.dismiss()
person Pavan Pyati    schedule 15.04.2021

используйте следующий код

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();
person Muhammad Hamza Shahid    schedule 17.02.2017