如何将动态布局元素归为一组?

时间:2018-10-15 13:05:28

标签: android android-layout user-interface

我正在尝试在Android中编写桌游。但是,此游戏没有固定的棋盘。取而代之的是,棋盘由游戏图块动态组成。因此,您可以根据图块的位置使用不同的布局。以下是有效布局的一些示例:

示例1:

1111111111111111

示例2:

1111
1111
1111
1111

示例3:

111111
  11
  11
111111

示例4:

  11
111111
111111
  11

假设布局存储在txt文件中。

为了制作UI,我想我想创建一个充当图块容器的组。该代码将负责创建图块并动态创建布局组件,并将其放入组中。另外,请记住,位置很重要。在第一个示例中,由于屏幕尺寸的限制,我不想将图块显示为两行。

实现此UI的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我刚刚找到了可行的解决方案。可能不是最佳选择,但它解决了我的问题:

/*Start with first row*/
var currentRow = TableRow(context)
/*Go char by char*/
for (letter in boardStructure) {
    if (letter == separator) {
        /*Put row in table layout and create next row*/
        table.addView(currentRow)
        currentRow = TableRow(context)
    } else {
        /*Create element and put it in row*/
        val tv = TextView(context)
        tv.text = letter.toString()
        tv.width = 100
        tv.height = 100
        currentRow.addView(tv)
    }
}
/*Put final row in the table layout*/
table.addView(currentRow)

boardStructure是从问题中描述的包含1和0的文件加载的Stringseparator是用于分隔每一行的字符。 table是布局中的预定义TableLayout

只是为了隔离我所问的问题,而不是放置图块的表示,而是将文件中收到的1和0放置为说明问题。为了从此处继续开发,我将在else分支中检查letter是0还是1。