首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确设置LayoutParams

如何正确设置LayoutParams
EN

Stack Overflow用户
提问于 2019-09-18 13:51:05
回答 1查看 230关注 0票数 1

我正在创建一个由10X10单元格组成的表,它(在创建所有单元格之后)将不适合它的父单元。

  • 为了在显示代码之前更容易理解,表如下所示:

如您所见,每个表格单元格都是一个以"Test“作为文本的按钮,我无法使这个10X10网格扩展以填充其父单元格(视图水平退出屏幕,不会垂直填充)。

我正在以编程方式创建每个单元格,如下所示:

代码语言:javascript
复制
    val table = findViewById<TableLayout>(R.id.table)
    for (i in 0..9) {    //10 rows inside the table
        val row = TableRow(this)
        for (j in 0..9) {    //10 cells inside every row

            val cell = Button(this)   
            cell.layoutParams =  TableRow.LayoutParams(

                TableRow.LayoutParams.WRAP_CONTENT,
                TableRow.LayoutParams.WRAP_CONTENT
            )

            cell.text = "test"
            cell.setTextColor(Color.RED)
            cell.setBackgroundColor(Color.WHITE)
            cell.setPadding(0, 0, 0, 0)
            row.addView(cell)
        }
        table.addView(row)
    }
  • 我的下一步是改变我为每个单元格设置layoutParams的方式,我试图像这样改变每个单元格的尺寸: cell.layoutParams = TableRow.LayoutParams( //table =包含所有单元格表/5的视图,//使单元格宽度=父宽度表的20%。高度/10//使单元格height=为父单元格高度的10% )

由于某种原因,这使得整个表消失了,并且将布局参数设置为MATCH_PARENT WRAP_CONTENT**.**具有相同的效果。

我检查了通过编程方式设置LayoutParamsLayoutParams,但是我还没有找到答案。

我做错了什么使我的表消失了,以及如何使单元格符合表的大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-18 20:16:27

  1. 编写table.width/5,所以可能在0..4中使用j
  2. 请参阅TableLayout参考 TableLayout的子级不能指定layout_width属性。宽度总是MATCH_PARENT。但是,可以定义layout_height属性。

使用android:stretchColumns使表能够正确地调整按钮宽度。

但,

TableRow的子属性不需要在XML文件中指定layout_width和layout_height属性。TableRow总是强制这些值分别为ViewGroup.LayoutParams.MATCH_PARENT和ViewGroup.LayoutParams.WRAP_CONTENT。

这意味着,从书本上看,您不能用垂直的表格填充父表。但通过钩子或弯,你可以强迫每个按钮的高度正好是全部高度的1/10。

您不能做的是在构建布局时使用table.height,因为在这个阶段还不知道父级的高度。我希望你能根据屏幕大小来计算这个高度。

  1. 有了这样的编程设置,您就不需要表布局了,填充父视图的垂直的水平线性视图就足够了。
  2. 使用ConstraintLayout,可以将元素的宽度和高度指定为父元素的百分比,请参见https://android.jlelse.eu/whats-new-in-constraint-layout-1-1-0-acfe30cfc7be
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57994351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档