altendky
altendky

Reputation: 4344

Android EditText in AlertDialog seems too wide

It seems like the EditText in the image below is too wide. I assume that I have misused the SDK in some way and until convinced otherwise I am not looking for a way to specify some number of margin/padding pixels on the sides of the EditText.

enter image description here

This one looks more appropriate.

enter image description here

Here's my code (that creates the first, 'Create Tag', dialog):

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

Sorry for the length of the post and thanks for any helpful comments.

Upvotes: 12

Views: 14712

Answers (4)

Cheryl Simon
Cheryl Simon

Reputation: 46844

Try setting some padding on your EditText using the setPadding method. This should add a gap between the edge of the EditText and the border of the dialog. N

Upvotes: 0

Whiler
Whiler

Reputation: 8086

You can do it like this:

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

Moreover, setSingleLine is deprecated. You should use InputStyle.

Upvotes: 13

Ricky
Ricky

Reputation: 7879

Just sorted this myself. Using an instance of AlertDialog, you can specify setView and pass in spacing parameters. This will work.

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

Edit: I'm aware this question is old, but no solution was provided.

Upvotes: 30

John Leehey
John Leehey

Reputation: 22240

Set the layout marginleft and layout marginright to 5sp. The margin sets the space around the view group. Take a look at ViewGroup.MarginLayoutParams

Upvotes: 1

Related Questions