How to automatically resize an EditText widget (with some attributes) in a TableLayout

Posted by steff on Stack Overflow See other posts from Stack Overflow or by steff
Published on 2010-04-28T13:09:42Z Indexed on 2010/04/28 13:13 UTC
Read the original article Hit count: 1172

Hi everyone,

I have a layout issue. What I do is this:

  1. create TableLayout in xml with zero children:
    <TableLayout android:id="@+id/t_layout_contents" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/l_layout_tags" android:stretchColumns="1" android:paddingLeft="5dip" android:paddingRight="5dip" />
  2. Insert first row programmatically in onCreate():

    tLayoutContents = (TableLayout)findViewById(R.id.t_layout_contents);
    NoteElement nr_1 = new NoteElement(this);
    tLayoutContents.addView(nr_1);

Class "NoteElement" extends TableRow. The 1st row just consists of a blank ImageView as a placeholder and an EditText to enter text. NoteElement's constructor looks like this:

public NoteElement(Context c) {  
    super(c);  
    this.context = c;  
    defaultText = c.getResources().getString(R.string.create_note_help_text);  

    imageView = new ImageView(context);
    imageView.setImageResource(android.R.color.transparent);

    LayoutParams params = new LayoutParams(0);
    imageView.setLayoutParams(params);

    addView(imageView);
    addView(addTextField());
}

Method addTextField() specifies the attributes for the EditText widget:

private EditText addTextField() {  
    editText = new EditText(context);  
    editText.setImeOptions(EditorInfo.IME_ACTION_DONE);  
    editText.setMinLines(4);  
    editText.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
    editText.setHint(R.string.create_note_et_blank_text);
    editText.setAutoLinkMask(Linkify.ALL);
    editText.setPadding(5, 0, 0, 0);
    editText.setGravity(Gravity.TOP);
    editText.setVerticalScrollBarEnabled(true);

    LayoutParams params = new LayoutParams(1);
    editText.setLayoutParams(params);

    return editText;
}

So far, so good. But my problem occurs as soon as the available space for the chars is depleted. The EditText does not resize itself but switches to a single line EditText. I am desperatly looking for a way in which the EditText resizes itself in its height dynamically, being dependant on the inserted text length.

Does anyone have a hint on this?
Thanks & regards,
steff

© Stack Overflow or respective owner

Related posts about android

Related posts about edittext