Как расширить среднюю строку таблицы в таблице TableLayout в Android? - PullRequest
2 голосов
/ 02 мая 2011

В моем приложении для Android есть следующий макет:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/widget41"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<tablerow>
    <Button android:id="@+id/button_when" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:padding="10px"
        android:text="When">
    </Button>
</tablerow>
<tablerow>
    <EditText android:id="@+id/text_description" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:padding="10px"
        android:text="What happened?" android:textSize="18sp">
    </EditText>
</tablerow>
<tablerow>
    <Button android:id="@+id/button_location" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:padding="10px"
        android:text="Location">
    </Button>
</tablerow>

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

Ответы [ 2 ]

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

Это можно сделать намного проще, чем предложение от Varundroid.android.widget.TableRow является подклассом от android.widget.LinearLayout и поэтому принимает все параметры, которые может принимать макет.Так что это поможет:

  <TableRow
    android:layout_height='fill_parent'
    android:layout_weight='1.0'
    android:layout_width='fill_parent'
  >
  …
  </TableRow>

Обратите внимание, что настройка android:layout_weight обычно требуется, когда требуется расширение.

0 голосов
/ 02 мая 2011

Это очень просто.

Есть два способа

  1. определить плотность экрана и разрешение, а затем выяснить, сколько места требуется первым и последним.
  2. Теперь просто выделите оставшуюся часть пространства в среднем ряду, используя android:layout_height="space which has been left"

Другой способ - изменить android: layout_height, пока он не закроет весь экран

Мое личное мнение состоит в том, чтобы пойти с первым, потому что размеры экрана могут варьироваться от устройства к устройству, поэтому вы должны быть осторожны.

Кстати, вы уверены, что ваш код работает?потому что ваш t прописан маленькой буквой в вашем теге <tablerow>, где он должен быть <TableRow>.и иногда, если вы не передадите android:layout_height and android:layout_width в каждом теге, это может вызвать ошибку в вашем макете.

Играйте безопасно, иначе ваше приложение будет с ошибками.

Iнадеюсь, это поможет.

...