У меня проблема с макетом, которую я не могу исправить. Я просмотрел много постов здесь, и мой, кажется, достаточно уникален, чтобы задать вопрос.
Я создал собственный диалог, который программно создает таблицу из 3 строк. Верхняя и нижняя строки содержат текст, а средняя строка содержит ScrollView, который содержит LinearLayout. Этот LinearLayout содержит некоторое количество представлений (TextView в этом примере). Поскольку я делаю это программно, см. Ниже псевдокод XML и фактический код ниже.
Я хотел бы, чтобы, когда высота содержимого в LinearLayout становилась слишком большой, ScrollView выполнял свою работу, а TextView верхнего и нижнего колонтитула всегда был виден.
Проблема в том, что когда диалоговое окно становится достаточно большим, появляется вид ScrollView, занимающий весь диалог, и мой нижний колонтитул TextView исчезает с экрана.
Что я могу сделать, чтобы текстовое представление нижнего колонтитула никогда не исчезало, но ScrollView все еще может функционировать?
Смотрите следующие ссылки на изображения:
Слева виден нижний колонтитул, справа -:
http://img690.imageshack.us/i/screenshotss.png/
<TableLayout>
<TableRow>
<TextView>
</TableRow>
<TableRow>
<ScrollView>
<LinearLayout>
<TextView/>
<TextView/>
<TextView/>
...
</LinearLayout>
</ScrollView>
</TableRow>
<TableRow>
<TextView>
</TableRow>
</TableLayout>
Вот код:
public class DialogScrollTest extends Dialog {
public DialogScrollTest(Context ctx){
super(ctx);
setTitle("");
requestWindowFeature(Window.FEATURE_NO_TITLE);
TableLayout table = new TableLayout(ctx);
TableRow row;
TextView text;
row = new TableRow(ctx);
{
text = new TextView(ctx);
text.setText("TestTop");
row.addView(text);
}
table.addView(row);
row = new TableRow(ctx);
{
ScrollView scroll = new ScrollView(ctx);
{
LinearLayout linear = new LinearLayout(ctx);
linear.setOrientation(LinearLayout.VERTICAL);
for(int t=0; t<32; ++t){
text = new TextView(ctx);
text.setText("TestScroll");
linear.addView(text);
}
scroll.addView(linear);
}
row.addView(scroll);
}
table.addView(row);
row = new TableRow(ctx);
{
text = new TextView(ctx);
text.setText("TestBottom");
row.addView(text);
}
table.addView(row);
this.setContentView(table);
}
}