Адаптивная ширина и высота при программном добавлении видов - PullRequest
1 голос
/ 03 мая 2019

В настоящее время я использую макет таблицы и программно добавляю строки и кнопки. Однако, когда я добавляю представления, многие из них уходят за пределы экрана. Есть ли способ программно установить размер части экрана.

У меня приличный опыт работы с 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 голосов
/ 06 мая 2019

Попробуйте следующий код:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...