custom alert dialog getting unwanted padding

后端 未结 3 1580
甜味超标
甜味超标 2021-01-02 05:07

I have tried to make a custom alert dialog and it mostly works very well. the functionality is working perfectly but the view is behaving in a weird way. The dialog layout c

相关标签:
3条回答
  • 2021-01-02 05:49

    For me, it seemed that builder.setView(dialogView, 0, 0, 0, 0); is set to @hide and not available. In the end, I had to set the padding of my custom view's parent after calling show()

    For example:

    // Inflate custom dialog view
    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    CustomDialogView dialogView = (CustomDialogView)inflater.inflate(R.layout.dialog_view, null);
    
    // Create and show custom alert dialog
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(R.string.dialog_title);
    builder.setView(dialogView);
    builder.setPositiveButton(R.string.dialog_ok, this);
    builder.setNegativeButton(R.string.dialog_cancel, this);
    builder.show();
    
    // Remove padding from parent
    ViewGroup parent = (ViewGroup)dialogView.getParent();
    parent.setPadding(0, 0, 0, 0);
    
    0 讨论(0)
  • 2021-01-02 05:49

    Here is code that will give you full control over the dialog view:

    final Dialog dlg = new Dialog(this);
    View action_layout = ((LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.contacts_action, null);
    dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);  
    Window window = dlg.getWindow();
    window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    WindowManager.LayoutParams wlp = window.getAttributes();
    wlp.gravity = Gravity.FILL_HORIZONTAL;
    window.setAttributes(wlp);
    dlg.setCancelable(true);
    dlg.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    dlg.setContentView(action_layout);
    dlg.show();
    
    0 讨论(0)
  • 2021-01-02 06:10

    The CustomPanel of an AlertDialog has a 5dp top and bottom padding. You can override these using:

    alert.setView(dialogView, 0, 0, 0, 0);
    
    0 讨论(0)
提交回复
热议问题