在AlertDialog中设置EditText的边距

我在我的Android应用程序中创建了一个带有EditText的AlertDialog,但默认的边距看起来很不对劲。 我试着指定边距如下:

android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(SpinActivity.this); builder.setTitle("Edit Spin Tags"); builder.setMessage("(separate tags with commas)"); // set input int margin = 10; final EditText input = new EditText(SpinActivity.this); input.setSingleLine(); input.setText(spinTags.toString().replace("[", "").replace("]", "")); builder.setView(input, margin, 0, margin, 0); 

但是,从下图中可以看出它没有应用所需的效果。

在此处输入图像描述

我尝试过的其他选项包括将输入放在LinearLayout中,并在将AlertDialog视图设置为LinearLayout之前使用LayoutParams设置边距。

如何在AlertDialog中设置EditText的边距?

实际上你的解决方案是完美的,除了builder.setView(input, margin, 0, margin, 0); 以“像素”值获取参数。 所以20的值非常小。 要么使用更高的保证金值,例如在100s。 或使用此function将dp转换为像素

 public static int dpToPx(int dp) { return (int) (dp * Resources.getSystem().getDisplayMetrics().density); } 

接着,

 int margin = dpToPx(20); 

您可以将LinearLayout作为EditText父级。 然后为EditText提供边距。

 private void createDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Demo"); builder.setMessage("Some demo message"); LinearLayout parentLayout = new LinearLayout(this); EditText editText = new EditText(this); editText.setHint("Some text"); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); // call the dimen resource having value in dp: 16dp int left = getPixelValue((int)getResources().getDimension(R.dimen.activity_horizontal_margin)); int top = getPixelValue((int)getResources().getDimension(R.dimen.activity_horizontal_margin)); int right = getPixelValue((int)getResources().getDimension(R.dimen.activity_horizontal_margin)); int bottom = getPixelValue((int)getResources().getDimension(R.dimen.activity_horizontal_margin)); // this will set the margins layoutParams.setMargins(left, top, right, bottom); editText.setLayoutParams(layoutParams); parentLayout.addView(editText); builder.setView(parentLayout); builder.setPositiveButton("OK", null); builder.create().show(); } private int getPixelValue(int dp) { Resources resources = getResources(); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, resources.getDisplayMetrics()); } 

欲了解更多信息,请访问http://www.pcsalt.com/android/set-margins-in-dp-programmatically-android/

在不同的布局文件中定义Edittext,同时在该布局中设置适当的边距。 膨胀该布局,然后将其设置为对话框的视图。