Проблема с макетом: прокрутка внутри таблицы, внутри пользовательского диалога - PullRequest
1 голос
/ 25 мая 2010

У меня проблема с макетом, которую я не могу исправить. Я просмотрел много постов здесь, и мой, кажется, достаточно уникален, чтобы задать вопрос.

Я создал собственный диалог, который программно создает таблицу из 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);
    }   
}

1 Ответ

1 голос
/ 25 мая 2010

Не могли бы вы просто использовать ListView с нижним колонтитулом и заголовком, или это пример данных, и на самом деле вы пытаетесь сделать что-то более сложное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...