AlertDialog中的Android EditText似乎太宽了

alt*_*dky 12 android width android-edittext android-alertdialog

看起来下图中的EditText太宽了.我假设我以某种方式滥用了SDK,直到确信我没有想办法在两侧指定一些边距/填充像素EditText.

在此输入图像描述

这个看起来更合适.

在此输入图像描述

这是我的代码(创建第一个'Create Tag'对话框):

final Dao<Tag, Integer> tagDao = getHelper().getTagDao();

final EditText input = new EditText(this);
input.setSingleLine(true);
input.setHint(R.string.create_tag_dialog_hint);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(input);
builder.setTitle(getString(R.string.create_tag_dialog_title));
builder.setPositiveButton(
    getString(R.string.create_tag_dialog_positive),
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            String value = input.getText().toString().trim();
            Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show();
            Tag tag = new Tag(value);
            try {
                    tagDao.create(tag);
            } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }
        }
    });
builder.setNegativeButton(
    getString(R.string.create_tag_dialog_negative), null);
builder.show();
Run Code Online (Sandbox Code Playgroud)

对不起该帖子的长度,感谢任何有用的评论.

Ric*_*cky 31

我自己整理了一下.使用实例AlertDialog,您可以指定setView并传入间距参数.这会奏效.

final EditText input = new EditText(this);

AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Title");
alertDialog.setMessage("Message");
alertDialog.setView(input, 10, 0, 10, 0); // 10 spacing, left and right
alertDialog.setButton("OK", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // Clicked
    }
});
alertDialog.show();
Run Code Online (Sandbox Code Playgroud)

编辑:我知道这个问题很旧,但没有提供解决方案.

  • 抬头:`alertDialog.setView(View,int,int,int,int);`在新的android api版本中不存在. (13认同)

Whi*_*ler 13

你可以这样做:

LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setGravity(Gravity.CENTER_HORIZONTAL);
final EditText input = new EditText(this);
input.setSingleLine(true);
layout.setPadding(10, 0, 10, 0);
input.setHint("Hint");
layout.addView(input);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
Run Code Online (Sandbox Code Playgroud)

此外,setSingleLine已被弃用.你应该用InputStyle.


Che*_*mon 0

EditText尝试使用setPadding方法设置一些填充。这应该在 EditText 的边缘和对话框的边框之间添加一个间隙。氮