Full screen DialogFragment

前端 未结 10 1998
执笔经年
执笔经年 2021-02-04 02:26

I am trying to create a DialogFragment with a width of MATCH_PARENT so the dialog is nearly full screen (leaving the padding around the edges for the floating look). I have see

相关标签:
10条回答
  • 2021-02-04 02:45

    I have answered this question with explanation this is the shortest and efficient way. Please check In this thread

    Hope this helps :)

    0 讨论(0)
  • 2021-02-04 02:54

    this is perfect for me. when extends DialogFragment override onCreateView()... impelments all logic

    dialog make it Full Screen just override this method

     @Override
    public Dialog onCreateDialog(final Bundle savedInstanceState) {
    
        // the content
        final RelativeLayout root = new RelativeLayout(getActivity());
        root.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    
        // creating the fullscreen dialog
        final Dialog dialog = new Dialog(getActivity());
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(root);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.YELLOW));
        dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    
        return dialog;
    }
    
    0 讨论(0)
  • 2021-02-04 02:54

    To have a full screen dialog, you need use

    public class CustomDialogFragment extends DialogFragment {
    
        @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);
        }
    
    
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            Dialog dialog = super.onCreateDialog(savedInstanceState);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            return dialog;
        }
    }
    

    And to show this dialog:

    CustomDialogFragment newFragment = new CustomDialogFragment();
    FragmentManager fragmentManager = getSupportFragmentManager();
    // To make it fullscreen, use the 'content' root view as the container
    // for the fragment, which is always the root view for the activity
    fragmentManager.beginTransaction().add(android.R.id.content, newFragment).commit();
    

    ATTENTION: You can't use following code to show the dialog, if not, the dialog will be shown in center of screen, not full screen.

    //don't show dialog like this
    newFragment.show(fragmentManager, "dialog");
    
    0 讨论(0)
  • 2021-02-04 02:55

    You can also do something like-

    @Override
      public void onCreate(@Nullable final Bundle savedInstanceState) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
          setStyle(STYLE_NO_TITLE, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen);
        } else {
          setStyle(STYLE_NO_TITLE, android.R.style.Theme_DeviceDefault_Light_NoActionBar);
        }
        super.onCreate(savedInstanceState);
    
      }
    

    By this you will also be able to see the status bar colored for versions >= lollipop

    0 讨论(0)
  • 2021-02-04 02:58

    On DialogFragment following works. In onCreateView() add following

    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //…
        getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        //…
        return view;
    }
    
    0 讨论(0)
  • 2021-02-04 03:00

    try to switch to RelativeLayout instead of LinearLayout. It worked in my case

    0 讨论(0)
提交回复
热议问题