Как сделать так, чтобы представления заполняли всю ширину родительского элемента в моем приложении для Android? - PullRequest
15 голосов
/ 09 марта 2010

У меня есть следующий макет, определенный для одного из моих действий:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <TableRow android:id="@+id/TableRow01" android:layout_height="wrap_content" android:layout_width="fill_parent">
        <EditText android:text="Resource Name" android:id="@+id/ResourceName" android:lines="1" android:isScrollContainer="false"></EditText>
    </TableRow>
    <TableRow android:id="@+id/TableRow02" android:layout_height="wrap_content" android:layout_width="fill_parent">
        <Button android:id="@+id/Tile" android:text="Tile"></Button>
    </TableRow>
</TableLayout>

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

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

Пока что документация для Android в целомбыло здорово, но есть несколько сценариев, как этот, когда я врезался в невидимую стену!Спасибо за помощь!

Ответы [ 3 ]

45 голосов
/ 09 марта 2010

Попробуйте использовать android:stretchColumns="0" (когда вы определяете TableLayout) или любой другой индекс столбца, который вы хотите растянуть.

Для получения дополнительной информации - http://developer.android.com/guide/tutorials/views/hello-tablelayout.html

15 голосов
/ 09 ноября 2016

Используйте android:layout_width="match_parent" в представлениях tableRow.

Теперь у вас есть различные возможности в TableLayout, устанавливающие для параметра android:stretchColumns значение:

Value "*" Вид будет иметь одинаковую ширину и заполнит строку, занимающую то же пространство

Value "0" or other integer -> Первый или элемент, соответствующий целому числу в строке, заполнит строку. Другое представление будет иметь ширину таким же образом, как wrap_content

Пример с разметкой таблицы из 3 tableRow с 2 представлениями каждый:

Без настройки android:stretchColumns:

[|TextView|EditText|          ]
[|TextView|EditText|          ]
[|TextView|EditText|          ]

андроид: stretchColumns = "*"

[|  TextView    |  EditText  |]
[|  TextView    |  EditText  |]
[|  TextView    |  EditText  |]

Android: stretchColumns = "0"

[|    TextView      |EditText|]
[|    TextView      |EditText|]
[|    TextView      |EditText|]

Android: stretchColumns = "1"

[|TextView|      EditText    |]
[|TextView|      EditText    |]
[|TextView|      EditText    |]
9 голосов
/ 09 марта 2010

Попробуйте это в определении вашей TableRow:

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