Как заставить представление в TableRow расширяться шире, чем остальные элементы в таблице?

У меня есть TableLayout из 2 столбцов, заполняющий всю ширину фрагмента, но я хочу, чтобы определенный элемент (пользовательский индикатор выполнения) был жадным и занимал максимально возможную ширину, вплоть до ширины самой таблицы, например, так:

_______________________________
|Text1-1|Value1-2 |           |
|Text2-1|Value2-2 |           |
|Text3-1|Value3-2=============|

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

Сначала я попытался поместить индикатор выполнения и связанный с ним текстовый просмотр в LinearLayout с диапазоном 2:

<TableRow>
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text 3-1" />

  <LinearLayout
    android:layout_span="2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Value3-2" />

    <ProgressBar
      style="?android:attr/progressBarStyleHorizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:max="100" />
  </LinearLayout>
</TableRow>

LinearLayout не расширяется за пределы ширины столбца 2, предположительно потому, что отсутствует столбец 3, поскольку все строки имеют 2 дочерних элемента:

_______________________________
|Text1-1|Value1-2 |           |
|Text2-1|Value2-2 |           |
|Text3-1|Value3-2=|           |

Затем я удалил LinearLayout, сделав индикатор выполнения третьим дочерним элементом его TableRow:

<TableRow>
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text 3-1" />

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value3-2" />

  <ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="100" />
</TableRow>

Теперь индикатор выполнения отображается в "столбце 3", но использует только произвольную короткую длину, несмотря на наличие "fill_parent":

______________________________
|Text1-1|Value1-2|           |
|Text2-1|Value2-2|           |
|Text3-1|Value3-2|===        |

Как мне сказать ему использовать всю доступную ширину, зарезервированную таблицей?

1 ответ

Надеюсь, я правильно понял ваш вопрос. Попробуйте установить

android:layout_weight="1"

для тебя LinearLayout в TableRow

Другие вопросы по тегам