【发布时间】:2019-04-22 12:19:08
【问题描述】:
我正在尝试与动态生成的按钮进行交互。我想为点击的玩家以及点击时靠近水平或垂直轴的玩家更新文本和背景颜色。
我尝试过的。我在 XML 中找到了一个按钮的 id 属性,这让我想到我可以创建一个文本键来引用以编程方式生成的按钮。但是当我尝试分配一个 id 时 - IDE 需要一个数字 (Int),而不是一个字符串。由于按钮形成一个方形数组 - 我决定通过 4 位数字对每个按钮进行编码,其中前 2 位数字代表行号,另外两个代表列号。虽然当我尝试使用 findViewById 时,IDE 告诉我它需要一个特殊的 id 数据类型,而不是数字。
这就是现在的样子:
for (i in 1..size) {
for (j in 1..size){
val button = Button(this)
button.id = i*100 + j
constraintLayout.addView(button)
}
}
我可以看看什么想法或方法?
【问题讨论】:
-
关于特殊 ID 数据类型的 IDE 消息来自 lint。你应该能够压制它。将光标放在有问题的行上,然后按 alt-enter。应该有一个菜单项。
-
如果您只有带有 id 的自定义按钮,您可以获取协调器布局的所有子元素并对其进行迭代。
-
迈克,谢谢!我尝试使用 val btn = constraintLayout.findViewById
(101) as Button 并通过 toast 我能够通过 确认它是正确的按钮btn.text.toString()