Как разместить элементы динамического макета в группе? - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь закодировать настольную игру в Android.Однако в этой игре нет фиксированной доски.Вместо этого доска динамически состоит из игровых фишек.Таким образом, вы можете иметь разные макеты в зависимости от положения плитки.Вот несколько примеров допустимых макетов:

Пример 1:

1111111111111111

Пример 2:

1111
1111
1111
1111

Пример 3:

111111
  11
  11
111111

Пример 4:

  11
111111
111111
  11

Допустим, макет хранится в текстовом файле.

Для создания пользовательского интерфейса я предполагаю, что хочу создать группу, которая будет действовать какКонтейнер с плиткой.Код будет отвечать за создание плиток и динамическое создание компонентов макета и размещение их в группе.Кроме того, имейте в виду, что позиция важна.В первом примере я бы не хотел, чтобы плитки отображались в две строки из-за ограничений размера экрана.

Каков наилучший способ реализации этого пользовательского интерфейса?

1 Ответ

0 голосов
/ 18 октября 2018

Я только что нашел рабочее решение.Это, вероятно, неоптимально, но это решило мой вопрос:

/*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 - это String, загруженный из файла, содержащего 1 и 0, как описано в вопросе.separator - это символ, который разделяет каждую строку.table - это предопределенный TableLayout в макете.

Просто чтобы выделить вопрос, который я задавал, вместо того, чтобы ставить представление плиток, я помещаю 1 и 0 как полученные в файле, чтобы проиллюстрировать проблему,Для продолжения разработки отсюда я бы проверил в ветке else, если letter равно 0 или 1.

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