Прокручиваемый Android ListView в строке TableView - PullRequest
1 голос
/ 03 июля 2010

У меня есть следующий макет для диалога:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/categorylist" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="0"> 
    <TableRow>
        <ListView 
            android:id="@+id/categorylistview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:isScrollContainer="true"
            android:scrollbars="vertical"
            android:scrollbarStyle="insideOverlay"
        />
    </TableRow>
    <TableRow>
        <TextView 
            android:text="New Category" 
            ...
        </TextView>
    </TableRow>
    <TableRow>
        <EditText 
            android:id="@+id/NewCategoryEditText" 
            ...
        </EditText>
    </TableRow>
    <TableRow>
        <Button 
            android:id="@+id/newcategorybutton"
            ...
        />
    </TableRow>
</TableLayout>      

Я бы хотел, чтобы Listview увеличивался до тех пор, пока не будет использовано доступное пространство, а затем прокручивайте по мере увеличения. Это прекрасно работает, когда строка таблицы с Listview является последней в TableLayout:

альтернативный текст http://heeroz.com/scroll2.png

Однако наличие кнопки «Добавить» вверху списка не очень интуитивно понятно. Когда я перемещаю «фиксированные» строки таблицы вниз, ListView выталкивает их с экрана, как только он увеличивается до точки, где он должен прокручиваться. ListView начнет прокручиваться только тогда, когда не останется ничего, что можно было бы оттолкнуть от экрана:

альтернативный текст http://heeroz.com/scroll1.png

Как изменить макет, чтобы строки таблицы с кнопкой и представлением EditText оставались видимыми?

1 Ответ

4 голосов
/ 03 июля 2010

Есть ли конкретная причина, по которой вы используете TableLayout вместо LinearLayout с android:orientation="vertical"? Если вы используете LinearLayout, вы можете указать android:layout_weight="1" на ListView, и вы получите желаемый результат.

...