How to achieve a full-screen dialog as described in material guidelines?

前端 未结 3 965
猫巷女王i
猫巷女王i 2021-02-01 03:59

Material guidelines describe the behavior of a full-screen dialog.

Full-screen dialog | Dialogs - Material Design

How can I achieve

3条回答
  •  情歌与酒
    2021-02-01 04:19

    Use DialogFragment

    Refer this link for Showing a Dialog Fullscreen or as an Embedded Fragment

    http://developer.android.com/guide/topics/ui/dialogs.html#FullscreenDialog

    I am just copying the code here.

    Create a dialogfragment

        public class CustomDialogFragment extends DialogFragment {
        /** The system calls this to get the DialogFragment's layout, regardless
            of whether it's being displayed as a dialog or an embedded fragment. */
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // Inflate the layout to use as dialog or embedded fragment
            return inflater.inflate(R.layout.purchase_items, container, false);
        }
    
        /** The system calls this only when creating the layout in a dialog. */
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // The only reason you might override this method when using onCreateView() is
            // to modify any dialog characteristics. For example, the dialog includes a
            // title by default, but your custom layout might not need it. So here you can
            // remove the dialog title, but you must call the superclass to get the Dialog.
            Dialog dialog = super.onCreateDialog(savedInstanceState);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            return dialog;
        }
    }
    

    Then add this method to show the dialog

        public void showDialog() {
        FragmentManager fragmentManager = getSupportFragmentManager();
        CustomDialogFragment newFragment = new CustomDialogFragment();
    
        if (mIsLargeLayout) {
            // The device is using a large layout, so show the fragment as a dialog
            newFragment.show(fragmentManager, "dialog");
        } else {
            // The device is smaller, so show the fragment fullscreen
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            // For a little polish, specify a transition animation
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            // To make it fullscreen, use the 'content' root view as the container
            // for the fragment, which is always the root view for the activity
            transaction.add(android.R.id.content, newFragment)
                       .addToBackStack(null).commit();
        }
    }
    

    The main thing that has to be focused is in this line

    transaction.add(android.R.id.content, newFragment).addToBackStack(null).commit();
    

    The dialog become fullscreen when u specifiy the rootview as the android.R.id.content

提交回复
热议问题