以编程方式添加视图时的响应宽度和高度

时间:2019-05-03 19:22:57

标签: android kotlin

我目前正在使用表格布局,并以编程方式添加行和按钮。但是,当我添加视图时,它们中的许多将不在屏幕上。有没有办法以编程方式将尺寸设置为屏幕的一部分。

我在Android方面有不错的经验,但对Kotlin还是陌生的。

这是我添加视图的地方

private fun setupTable () {
    for(i in 0 until this.rowSize) {
        val row = TableRow(context)
        row.layoutParams
        row.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT)
        for(j in 0 until this.columnSize) {
            val button = Button(context)
            button.apply {
                layoutParams = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                    TableRow.LayoutParams.WRAP_CONTENT)
                text = "R $i C $j"
            }
            row.addView(button)
        }
        wordLayout?.addView(row)
    }
}

这里是图片供参考。在这里,我想要一个10x10的桌子,并适合TableLayout中的所有按钮。

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

package net.androidly.androidlylayouts

class MainActivity : AppCompatActivity() {

    val ROWS = 10
    val COLUMNS = 5
    val tableLayout by lazy { TableLayout(this) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        textView.text = "ROWS : $ROWS COLUMNS: $COLUMNS"

        val lp = TableLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
        tableLayout.apply {
            layoutParams = lp
            isShrinkAllColumns = true
        }
        createTable(ROWS, COLUMNS)
    }

    fun createTable(rows: Int, cols: Int) {

        for (i in 0 until rows) {

            val row = TableRow(this)
            row.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT)

            for (j in 0 until cols) {

                val button = Button(this)
                button.apply {
                    layoutParams = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                            TableRow.LayoutParams.WRAP_CONTENT)
                    text = "R $i C $j"
                }
                row.addView(button)
            }
            tableLayout.addView(row)
        }
        linearLayout.addView(tableLayout)
    }
}

希望这会有所帮助。

enter image description here