Подтвердить что ты не робот

Как заставить представления заполнять всю ширину своего родителя в приложении для Android?

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

<?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 до сих пор была отличной, но есть несколько сценариев, подобных этой, где я ударил невидимую стену! Спасибо за помощь!

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Пример с табличной выкладкой из 3 таблиц с двумя видами:

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

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

Android: 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    |]