Nest TableLayout внутри LinearLayout - возможно ли это? - PullRequest
3 голосов
/ 20 июля 2011

Я хочу создать макет экрана Android, который будет выглядеть примерно так:

Label   Text Field
Label   Text Field
Label   Text Field

-----Button-------
-----TextField----

То есть, я хочу, чтобы TableLayout находился вверху, с несколькими элементами под макетом таблицы (в основном, чтобы я мог заставить эти элементы находиться внизу экрана). Я попытался вложить их, как показано в коде ниже, но элементы внизу, кажется, не появляются.

Есть идеи?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:stretchColumns="1"
    android:shrinkColumns="1" android:layout_height="wrap_content"  android:layout_gravity="center_vertical">
    <TableRow>
        <TextView android:text="Latitude:"
        android:textAppearance="?android:attr/textAppearanceLarge"
        />
        <TextView android:id="@+id/latitude"
        android:text="Not available"
        android:textAppearance="?android:attr/textAppearanceLarge"
        />
    </TableRow>
    <TableRow>
        <TextView android:text="Longitude:"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
        <TextView android:id="@+id/longitude"
        android:text="Not available"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
    </TableRow>
    <TableRow>
        <TextView android:text="Altitude:"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
        <TextView android:id="@+id/altitude"
        android:text="Not available"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
    </TableRow>
    <TableRow>
        <TextView android:text="Accuracy:"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
        <TextView android:id="@+id/accuracy"
        android:text="Not available"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
    </TableRow>
</TableLayout>
<Button android:id="@+id/save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Save"/>
<TextView android:text="Test"/>
</LinearLayout>

Ответы [ 4 ]

2 голосов
/ 20 июля 2011

в вашей таблице добавить эти

android:layout_height="80dp"  
 android:layout_weight="1.0"

также для нижней кнопки и просмотра текста добавьте фиксированную высоту. Если вашей таблице требуется больше места затем поместите его между scrollView

1 голос
/ 20 июля 2011

Вы можете попробовать сделать это с Droid Draw , его бесплатно и Он сгенерирует правильный xml для вас.

0 голосов
/ 09 апреля 2013

Для текстового поля вы должны использовать EditText вместо TextView и добавлять android:layout_height и android:layout_width к каждому виджету, используемому в вашем приложении.

0 голосов
/ 24 января 2013

Установите вес таблицы на «1», а высоту на «0dp».

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TableLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:shrinkColumns="1"
        android:stretchColumns="1" >

        <TableRow>
...
        </TableRow>
    </TableLayout>

    <Button
        android:id="@+id/save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Save" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Test" />

</LinearLayout>
...