Android EditText в AlertDialog кажется слишком широким - PullRequest
11 голосов
/ 08 февраля 2011

Кажется, что EditText на изображении ниже слишком широк. Я предполагаю, что я каким-то образом неправильно использовал SDK, и до тех пор, пока не убедился, иначе я не ищу способ указать некоторое количество полей / отступов по бокам 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();

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

Ответы [ 4 ]

30 голосов
/ 09 октября 2011

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

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

13 голосов
/ 08 февраля 2011

Вы можете сделать это так:

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.

1 голос
/ 08 февраля 2011

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

0 голосов
/ 08 февраля 2011

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

...