Ich habe ein Problem mit dem Layout. Was ich tue, ist dies:
- TableLayout in xml mit null Kindern erstellen:
<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" />
- Erste Zeile programmatisch in onCreate() einfügen:
TableLayout tLayoutContents = (TableLayout)findViewById(R.id.t_layout_contents); NoteElement nr_1 = new NoteElement(this); tLayoutContents.addView(nr_1);
Klasse "NoteElement" extends TableRow. Die 1. Zeile besteht nur aus einem leeren ImageView als Platzhalter und einem EditText zur Texteingabe. Der Konstruktor von NoteElement sieht wie folgt aus:
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());
}
Die Methode addTextField() legt die Attribute für das EditText-Widget fest:
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 weit, so gut. Aber mein Problem tritt auf, sobald der verfügbare Platz für die Zeichen ausgeschöpft ist. Der EditText ändert seine Größe nicht, sondern schaltet auf einen einzeiligen EditText um. Ich suche verzweifelt nach einer Möglichkeit, wie sich der EditText in seiner Höhe dynamisch anpassen kann, abhängig von der eingefügten Textlänge.
Hat jemand einen Tipp dazu?