如何在BottomsheetDialog中添加工具栏

时间:2018-09-24 10:22:01

标签: android

当我在扩展BottomSheetDialogFragment的片段中添加工具栏时。它的工具栏包含活动菜单以及片段,并且仅向上拖动到活动工具栏的高度,而不是整个窗口。 但是如果没有工具栏,它就可以正常工作。 所以,告诉我添加工具栏的正确方法。

public class BottomSheetDialog extends BottomSheetDialogFragment {

    @SuppressLint("RestrictedApi")
    @Override
    public void setupDialog(Dialog dialog, int style) {
        super.setupDialog(dialog, style);
        View v = View.inflate(getActivity(), R.layout.bottomsheet, null);
        dialog.setContentView(v);


    }
}

添加工具栏后

public class BottomSheetDialog extends BottomSheetDialogFragment {

    @SuppressLint("RestrictedApi")
    @Override
    public void setupDialog(Dialog dialog, int style) {
        super.setupDialog(dialog, style);
        View v = View.inflate(getActivity(), R.layout.bottomsheet, null);
        dialog.setContentView(v);

        Toolbar toolbar = v.findViewById(R.id.toolbar);
        ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);

    }
}

舞台图像

stage 1

stage2

1 个答案:

答案 0 :(得分:0)

我解决了 实际代码在这里

public class BottomSheetDialog extends BottomSheetDialogFragment {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setHasOptionsMenu(true);

    }


    @SuppressLint("RestrictedApi")
    @Override
    public void setupDialog(Dialog dialog, int style) {
        super.setupDialog(dialog, style);
        View v = View.inflate(getActivity(), R.layout.bottomsheet, null);
        dialog.setContentView(v);
        v.setFitsSystemWindows(true);

        Toolbar toolbar = (Toolbar) v.findViewById(R.id.bottomsheet_toolbar);
        toolbar.inflateMenu(R.menu.menu_details);
        toolbar.setTitle("title");
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                return true;
            }
        });

    }


    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_details, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog = super.onCreateDialog(savedInstanceState);
        // request a window without the title
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        return dialog;
    }
}