gpt4 book ai didi

android - 在 GridLayout 中动态添加相同大小的 View

转载 作者:行者123 更新时间:2023-11-29 18:54:08 24 4
gpt4 key购买 nike

我需要显示一个 4x10 的随机颜色网格。网格应水平和垂直填满屏幕,所有单元格的尺寸应相等。由于网格 (4x10) 尺寸在未来可能会发生变化,因此 GridLayout 对我来说比 TableLayout 更有意义。 GridView 和 RecyclerView 已淘汰,因为我不需要任何滚动行为。

因为我需要在运行时添加这些 subview ,所以我开始计算单元格宽度和高度作为屏幕宽度和高度的比率。然后我偶然发现了this SO post这表示 GridLayout 有更好的方法来实现这种行为。有一个基于静态 (XML) View 的代码示例,但我找不到 Java/Kotlin 示例。我正在试验 GridLayout.Spec在 subview 的 LayoutParams 中使用,但无法弄清楚它是如何工作的。

更新了所需布局的屏幕截图。此图像为 12x10,但我希望可以灵活地更改尺寸(编译时)。

enter image description here

最佳答案

与 LinearLayout 类似,GridLayout 规范中有一个权重属性 - 您可以为所有 View 将其设置为 1。类似于 LinearLayout,使用权重使宽度和高度为 0。如果您想按顺序绘制 View ,请使用 Undefined 作为位置,否则为每个单元格传递相应的位置。

    gridLayout.rowCount = rowCount
gridLayout.columnCount = colCount

for (i in 1..rowCount*colCount){
val layoutParams: GridLayout.LayoutParams = GridLayout.LayoutParams(
GridLayout.spec(GridLayout.UNDEFINED, 1f),
GridLayout.spec(GridLayout.UNDEFINED, 1f)).apply {
width = 0
height = 0
}

val blueView = View(this).apply {
setBackgroundColor(Color.BLUE)
}
gridLayout.addView(blueView, layoutParams)
}

关于android - 在 GridLayout 中动态添加相同大小的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com