Кнопки для заполнения ширины при использовании TableLayout - PullRequest
19 голосов
/ 10 февраля 2010

У меня есть таблица, содержащая 2 строки в каждой строке по 3 кнопки.Как я могу сделать кнопки, чтобы заполнить пространство одинаково.В HTML я бы дал им ширину 33%.

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

Ответы [ 4 ]

37 голосов
/ 10 февраля 2010

Попробуйте добавить android:stretchColumns="*" к тегу <TableLayout>.

15 голосов
/ 12 января 2012

Я наконец нашел верный ответ здесь: http://androidadvice.blogspot.com/2010/10/tablelayout-columns-equal-width.html

Здесь также есть более минимальный пример работы над стеком: https://stackoverflow.com/a/2865558/265521

Пример:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent">
    <TableRow>
        <Button
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:text="Why is doing layouts on Android"
            android:layout_weight="1"
            />
        <Button
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:text="so"
            android:layout_weight="1"
            />
    </TableRow>
    <TableRow>
        <Button
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:text="damn"
            android:layout_weight="1"
            />
        <Button
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:text="frustrating?"
            android:layout_weight="1"
            />
    </TableRow>
</TableLayout>
3 голосов
/ 10 февраля 2010

Установите для TableRow layout_width значение fill_parent и задайте layout_weight 1 для каждой кнопки.

layout_weight работает примерно как процент. Если все ваши предметы получают одинаковое количество, они занимают одинаковый процент пространства. Если одна кнопка имеет вес 2, а другая - 1, то первая будет занимать вдвое больше места.

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

0 голосов
/ 05 марта 2015

Итак, в заключение постов, правильный способ сделать это - установить NumberOfTheColumns:

   <tablelayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:stretchColumns="NumberOfTheColumns"/>

Вы можете установить, сколько горизонтальных «кусочков» вам нужно. Если у вас есть стол 3х3:

 <TableLayout
    android:minWidth="25px"
    android:minHeight="25px"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tableLayout1"
    android:stretchColumns="3">
    <TableRow
        android:id="@+id/tableRow1">
        <TextView
            android:text="@string/EventTitle"
            android:id="@+id/textView1"
            android:gravity="center_vertical"
            android:layout_column="0" />
        <EditText
            android:inputType="text"
            android:id="@+id/editText3"
            android:layout_weight="2"
            android:layout_span="2"
            android:layout_column="1" />
    </TableRow>
    <TableRow
        android:id="@+id/tableRow2">
        <TextView
            android:text="@string/EventDateStart"
            android:id="@+id/textView1"
            android:gravity="center_vertical"
            android:layout_column="0" />
        <EditText
            android:inputType="date"
            android:id="@+id/editText1"
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_width="wrap_content" />
        <EditText
            android:inputType="time"
            android:id="@+id/editText2"
            android:layout_weight="1"
            android:layout_column="2"
            android:layout_width="match_parent" />
    </TableRow>
    <TableRow
        android:id="@+id/tableRow3">
        <TextView
            android:text="@string/EventDateEnd"
            android:id="@+id/textView1"
            android:gravity="center_vertical"
            android:layout_column="0"
            android:layout_width="match_parent" />
        <EditText
            android:inputType="date"
            android:id="@+id/editText1"
            android:layout_weight="1"
            android:layout_column="1" />
        <EditText
            android:inputType="time"
            android:id="@+id/editText2"
            android:layout_weight="1"
            android:layout_column="2" />
    </TableRow>
    <TableRow>
        <TextView
            android:text="@string/Description"
            android:id="@+id/textView1"
            android:gravity="center_vertical"
            android:layout_weight="3"
            android:layout_span="3"
            android:layout_column="0"
            android:layout_width="match_parent" />
    </TableRow>
    <TableRow>
        <EditText
            android:inputType="textMultiLine"
            android:id="@+id/editText3"
            android:layout_height="50dp"
            android:layout_weight="3"
            android:layout_span="3"
            android:layout_column="0"
            android:layout_width="match_parent" />
    </TableRow>
</TableLayout>

В этом примере вы можете увидеть таблицу 5х3. Вы можете установить ширину каждого столбца, указав, сколько частей полной ширины таблицы вам нужно ...

...