Android EditText в AlertDialog кажется слишком широким

Похоже, что EditText на изображении ниже слишком широк. Я предполагаю, что я неправильно использовал SDK и до тех пор, пока не убедился в противном случае, я не ищу способ указать некоторое количество пикселов margin/padding по сторонам EditText.

enter image description here

Это выглядит более подходящим.

enter image description here

Здесь мой код (который создает первый, "Создать тег", диалог):

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();

Извините за длину сообщения и спасибо за любые полезные комментарии.

Ответ 1

Просто отсортировал это сам. Используя экземпляр 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();

Изменить: я знаю, что этот вопрос старый, но решение не было предоставлено.

Ответ 2

Вы можете сделать это следующим образом:

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);

Кроме того, setSingleLine устарел. Вы должны использовать InputStyle.

Ответ 3

Установите макет marginleft и layout marginright на 5sp. Поля задают пространство вокруг группы просмотра. Взгляните на ViewGroup.MarginLayoutParams

Ответ 4

Попробуйте установить дополнение на вашем EditText с помощью метода setPadding. Это должно добавить разрыв между краем EditText и границей диалога. N