自定义警报对话框获取不需要的填充

Emi*_*der 10 android android-alertdialog

我试图创建一个自定义警报对话框,它大部分工作得很好.功能完美,但视图表现得很奇怪.对话框布局由按钮和列表视图组成.正如您将在下面的屏幕截图中看到的那样,按钮在顶部和底部都有一个边距.

我没有看到这些利润的任何原因,我会非常感谢一些帮助:)

由于某种原因,我无法发布我的xml布局,但我可以确定它不包含填充或任何类型的边距

Java代码:

View dialogView = ((LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.choose_catagory_dialog_layout, null, false);
Button footerButton = (Button) dialogView.findViewById(R.id.choose_catagory_dialog_footer_button);
footerButton.setOnClickListener(ButtonClickEvent);

builder = new AlertDialog.Builder(mContext);
builder.setView(dialogView);
builder.setTitle(R.string.choose_catagory);

builder.setAdapter(spinnerAdapter, ListclickEvent);
alert = builder.create();
alert.getListView().setVerticalFadingEdgeEnabled(false);
alert.setOwnerActivity((Activity) mContext);
Run Code Online (Sandbox Code Playgroud)

截图:

http://cl.ly/3S2y3p3E0e3H2o1I272m

pca*_*ans 19

一个AlertDialog具有5dp顶部和底部填充的CustomPanel .您可以使用以下方法覆盖它

alert.setView(dialogView, 0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

  • 好吧,但这是AlertDialog类的方法,而不是AlertDialog.builder,那么如何调用该方法? (3认同)
  • @JKM你确定它是AlertDialog.builder的一部分吗?您提供的链接也不支持您的论点.. (2认同)

Cha*_*ase 10

对我来说,它似乎builder.setView(dialogView, 0, 0, 0, 0);已设置为@hide不可用.最后,我必须在调用后设置自定义视图父级的填充show()

例如:

// 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);
Run Code Online (Sandbox Code Playgroud)