TableLayout
- плохой выбор. Из-за присущей ей текучести столбцы будут различаться по ширине в зависимости от содержимого внутри них (хотя растяжение минимизирует это), которое вы не можете контролировать (см. Ниже). Кроме того, объявление пространства имен должно быть только в корневом элементе XML, а не в каждом;)
Значительно упростите макет строки, используя вместо этого:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView android:id="@+id/tvwPlayer1Score"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"/>
<TextView android:id="@+id/tvwPlayer2Score"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"/>
<TextView android:id="@+id/tvwPlayer3Score"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"/>
<TextView android:id="@+id/tvwPlayer4Score"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"/>
</LinearLayout>
Комбинация layout_width="fill_parent"
и layout_weight="1"
на каждом элементе говорит системе разместить все четыре элемента, расположенные на одинаковом расстоянии (поскольку они имеют одинаковую весовую сумму), чтобы заполнить строку. Я почти всегда использую вложенный LinearLayout
вместо TableLayout
всякий раз, когда это возможно (это все TableLayout
на самом деле так или иначе).
Еще одна вещь из строки XML, которую вы опубликовали: неправильно устанавливать корневой элемент макета элемента списка с помощью layout_height=fill_parent
, как в теге RelativeLayout
. В зависимости от того, где нарисован этот макет, менеджер макетов может фактически прослушать вас, и одна строка может в итоге занять все окно!
ПРИМЕЧАНИЕ О ТАБЛИЦЕ ПАРАМЕТРОВ:
Если вы настаиваете на том, чтобы придерживаться TableLayout
, знайте, что вы можете (и должны) опускать все атрибуты layout_width
и layout_height
для каждого дочернего элемента TableLayout
и TableRow
. Эти два виджета игнорируют то, что вы говорите, и устанавливают значения их дочерних элементов равными MATCH_PARENT и WRAP_CONTENT (соответственно), поэтому добавление их в ваш код будет только сбивать вас с толку, если вы думаете, что они должны вступить в силу.
Надеюсь, что поможет!