TextView, программно добавленный в TableLayout, не соответствует ширине родителя - PullRequest
0 голосов
/ 21 января 2020

Я хочу создать TableLayout с двумя столбцами. Первый столбец будет отображаться внутри ImageView и должен иметь ширину изображения. Второй столбец должен занимать все оставшееся пространство (чтобы соответствовать ширине строки).

TableLayout(context).apply {
    myList.forEach {
        val tableRow = TableRow(context)
        tableRow.setBackgroundColor(Color.GREEN)

        tableRow.addView(ImageView(context).apply {
            setImageResource(R.drawable.ic_blabla)
        })

        tableRow.addView(TextView(context).apply {
            text = it.code.toString()
            setBackgroundColor(Color.YELLOW)
            layoutParams = TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
                                                 TableRow.LayoutParams.WRAP_CONTENT)
        })

        addView(tableRow)
    }

    myLinearLayout.addView(this)
}

Макет таблицы программно добавляется к линейному макету:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/myLinearLayout"/>

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

enter image description here

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

1 Ответ

1 голос
/ 21 января 2020

Установите атрибут layout_weigth="1" для столбца, он придаст дополнительную важность виду, чтобы столбец мог занимать больше места на экране.

...