以编程方式添加到 TableLayout 的 TextView 与父级的宽度不匹配

TextView programmatically added to TableLayout doesn't match parent's width

我想创建一个包含两列的 TableLayout。第一列将在 ImageView 内显示 drawable 并且应该具有图片的宽度。第二列应占用所有剩余的 space(因此匹配行的宽度)。

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)
}

Table 布局以编程方式添加到线性布局:

<?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"/>

结果,我得到了两列,但都具有内容的宽度。该行有一个绿色背景,所以我可以看到它有屏幕的宽度,但黄色背景的第二列有里面显示的文本的宽度。

知道如何设置第二列的宽度来占用所有 space 吗?

为列设置 layout_weigth="1" 属性,它将为视图分配额外的重要性,因此该列将能够在屏幕上填充更多 space。