web-dev-qa-db-ja.com

プログラムでボトムシートを表示および非表示

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();

ここで、ボタンをクリックするとボトムシートを表示し、同じ方法で同じボタンをクリックするとボトムシートを非表示にしたいのですが、すでに表示されている場合

18
Sophie

ボタンの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();    
        }
    }
});
17
MatPag

フラグメント内からBottomSheetDialogFragmentを閉じるには、次のように呼び出すことができます。

dismiss();

アクティビティのBottomSheetDialogFragmentを表示または非表示にするには、単に呼び出すことができます:

bottomSheetDialogFragment.dismiss();//to hide it
bottomSheetDialogFragment.show(getSupportFragmentManager(),tag);// to show it
27
Malek Hijazi

次のコードを使用します

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();