TableView行中的可滚动Android ListView

时间:2010-07-03 03:48:15

标签: android listview scroll tablelayout

我有一个对话框的以下布局:

<?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中的最后一行时,这可以正常工作:

alt text http://heeroz.com/scroll2.png

但是,在列表顶部添加“添加”按钮不是很直观。当我将“固定”表格行移动到底部时,ListView会在它增长到应该滚动的点时将它们推离屏幕。只有当剩下的东西无法从屏幕上移开时,ListView才会开始滚动:

alt text http://heeroz.com/scroll1.png

如何更改布局,以便按钮和EditText视图的表格行仍然可见?

1 个答案:

答案 0 :(得分:4)

您使用TableLayout而不是使用LinearLayout的{​​{1}}是否有特殊原因?如果您使用android:orientation="vertical",则可以在LinearLayout上指定android:layout_weight="1",然后您就可以获得所需的结果。