У меня проблема с макетом. Что я делаю, это:
- создать TableLayout в xml с нулевыми дочерними элементами:
<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" />
- Вставить первую строку программно в onCreate ():
TableLayout tLayoutContents = (TableLayout)findViewById(R.id.t_layout_contents);<br>
NoteElement nr_1 = new NoteElement(this);<br>
tLayoutContents.addView(nr_1);
Класс «NoteElement» расширяет TableRow. 1-я строка состоит из пустого ImageView в качестве заполнителя и EditText для ввода текста. Конструктор NoteElement выглядит так:
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());
}
Метод addTextField () определяет атрибуты для виджета EditText:
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;
}
Пока все хорошо. Но моя проблема возникает, как только доступное место для символов заканчивается. EditText не изменяет свой размер, а переключается на одну строку EditText.
Я отчаянно ищу способ, которым EditText динамически изменяет свою высоту в зависимости от длины вставленного текста.
Кто-нибудь намекает на это?