Android: невозможно правильно настроить TableLayout - PullRequest
2 голосов
/ 23 января 2012

Я показываю данные из БД в Activity.Я хочу, чтобы таблица и кнопки снизу.Для данных данных TableLayout будет лучшим вариантом для этого.Я добавил TableLayout в HorizontalView и ScrollView, чтобы он прокручивался вертикально и горизонтально.Добавляю все строки динамически - включая заголовок.Эта часть работает нормально.

Я хочу, чтобы, когда содержимое было меньше ширины экрана, оно все же должно занимать всю ширину экрана.Например,Если таблица хорошо вписывается в портретном режиме, то, конечно же, в альбомном режиме, слева будет пустое пространство.Я не хочу, чтобы это пространство было пустым, а занимало все столбцы.Если ширина строки больше ширины экрана, то никаких проблем вообще нет - появляется горизонтальная полоса прокрутки.

Я пробовал несколько вариантов, но ничего не помогло.Любая идея, какие настройки сделать, чтобы использовать все пространство (если оно вообще есть) и показать его.

И да, еще 1 выпуск горизонтальной полосы прокрутки, он появляется только в последнем ряду.Я хочу, чтобы он отображался под последним рядом, чтобы была видна граница последнего ряда.Мой XML:

<?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">

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:scrollbars="horizontal|vertical">

<HorizontalScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginBottom="10dp" > 

<TableLayout android:id="@+id/browseTable" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:layout_marginBottom="20dp"
    android:background="#FF0000" android:stretchColumns="1,2,3">

</TableLayout>

</HorizontalScrollView>
</ScrollView>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:orientation="horizontal"  android:gravity="center" 
android:layout_marginTop="15dp">
    <Button android:id="@+id/browseAddBtn" android:text="Add" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginRight="10dp" />
    <Button android:id="@+id/browseViewBtn" android:text="Edit" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginRight="10dp"  />
    <Button android:id="@+id/browseReturnBtn" android:text="Return" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" />        
  </LinearLayout>

</LinearLayout>

ВЫХОД: enter image description here

Ответы [ 2 ]

5 голосов
/ 03 февраля 2012

При решении вашей проблемы я обнаружил одну вещь: TableLayout при использовании внутри HorizontalScrollView . android: stretchColumns не работает, когда мы используем макет таблицы в режиме горизонтальной прокрутки. Так что вы получаете пустое пространство, когда экран поворачивается или столбцы имеют меньшую ширину данных.

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

EDIT

Привет Твд наконец-то я получил решение вашей проблемы. внесите следующие изменения в файл макета XML.

В <HorizontalScrollView>

использовать

        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:fillViewport="true"

Используйте stretchColumns = "*" в TableLayout , если вы хотите растянуть все столбцы.

Bye. : -)

0 голосов
/ 23 января 2012

Я сделал некоторые изменения. некоторые из ваших проблем будут решены с помощью кода ниже

 <?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" >

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:scrollbars="horizontal|vertical" >

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp" >

        <TableLayout
            android:id="@+id/browseTable"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:background="#FF0000" >
        </TableLayout>
    </HorizontalScrollView>
</ScrollView>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="@android:style/ButtonBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/browseAddBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:text="Add" />

    <Button
        android:id="@+id/browseViewBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:text="Edit" />

    <Button
        android:id="@+id/browseReturnBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Return" />
</LinearLayout>

...