TableLayout с layout_width = matchparent не совпадает с родительским
У меня есть таблицаLayout с двумя столбцами и двумя строками, обе строки и последний столбец имеют match_parent для ширины, но макет не заполняет родительскую ширину, он выполняется таким же образом, как у wrap_content.
Вот код:
<TableLayout android:layout_width="match_parent">
<TableRow android:layout_width="match_parent">
<TextView
android:layout_width="wrap_content"
android:text="static" />
<EditText
android:layout_width="match_parent"
android:text="text" />
</TableRow>
<TableRow android:layout_width="match_parent">
<TextView
android:layout_width="wrap_content"
android:text="static2" />
<EditText
android:layout_width="match_parent"
android:text="text2" />
</TableRow>
</TableLayout>
Что мне нужно сделать для каждой строки, имеющей ширину родительского элемента?
Ps: место, где я работаю, не позволяет мне отправлять мой код, поэтому я пишу код как можно ближе к моему коду. Я не знаю, правильно ли это, я не могу проверить.
Ответы
Ответ 1
Попробуйте этот код, я думаю, он поможет вам:
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TableRow android:layout_width="match_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_weight="1"
android:text="static" />
<EditText
android:layout_width="match_parent"
android:layout_weight="1"
android:text="text" />
</TableRow>
<TableRow android:layout_width="match_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_weight="1"
android:text="static2" />
<EditText
android:layout_width="match_parent"
android:layout_weight="1"
android:text="text2" />
</TableRow>
</TableLayout>
Ответ 2
Также рассмотрите, есть ли другие строки, содержимое которых шире, чем другие строки, содержащие TextView, так как атрибут веса не будет работать хорошо. Рассмотрим этот пример:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Short Text" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Short Text"
android:layout_weight="1"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reaaaaaaaaaaaaaaaaaaaaaaaaaally lengthy and text"/>
</TableRow>
Итак, вот результат:
- Ячейка третьей строки устанавливает ширину каждой левой ячейки.
- EditText в первом ряду начинается там, где заканчивается левая ячейка (почти на три четверти ширины экрана).
- Во второй строке указан вес 1 на каждую ячейку, поэтому обе ячейки в строке должны измерять половину экрана, но, поскольку первая ячейка имеет такую ширину, вес рассчитывается пропорционально, поэтому даже если вы установите вес 50 для правой ячейка, вы никогда не получите половину экрана, потому что первая ячейка не может быть меньше, чем содержимое третьей ячейки.
Ответ 3
Я бы попробовал добавить android:weight="1"
в TableRow.