Android ListView с възможност за превъртане в ред TableView

Имам следното оформление за диалогов прозорец:

<?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
(източник: heeroz.com )

Въпреки това наличието на бутона Добавяне в горната част на списъка не е много интуитивно. Когато преместя "фиксираните" редове на таблицата на дъното, ListView ще ги изтласка от екрана, след като нарасне до точка, в която трябва да се превърта. ListView ще започне да превърта само тогава, когато не е останало нищо друго, което може да бъде избутано от екрана:

alt text
(източник: heeroz.com )

Как мога да променя оформлението си, така че редовете на таблицата с бутона и изгледа EditText да останат видими?


person cdonner    schedule 03.07.2010    source източник


Отговори (1)


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

person Rich Schuler    schedule 03.07.2010
comment
Не си спомням конкретна причина и ще опитам вашето предложение. Благодаря. - person cdonner; 03.07.2010
comment
Работи по-добре и досега не съм открил никакви недостатъци, . Благодаря! - person cdonner; 04.07.2010
comment
Когато работите с layout_weight, не забравяйте да използвате layout_width=0dp - person Peter; 06.02.2014