ConstraintLayout by Code - Установить ограничение слишком рано - PullRequest
0 голосов
/ 10 декабря 2018

Добрый день,

Мне нужно показать список карт верности, одну на других с небольшим полем границы, и, нажимая на нее, она полностью раскрывается при скольжении.

Во фрагменте я использую ConstraintLayout где-то на экране, который заполняю кодом.Я добавляю все дочерние элементы (общее количество, известное после вызова WS) в ConstraintLayout, затем я использую ConstraintSet для установки начальных ограничений.

Но при создании начального фрагмента я обнаружил, что Iнеобходимо применить TimeOut между ConstraintLayout населением и созданием Constraints (отвратительно, правда?)

добавление каждой карты ...

val card = FrequencyCardView()
fid_card_container.addView(card as View)
listCard.add(card)

Затем создайте ограничения:

val set = ConstraintSet()
val containerId = fid_card_container.id
set.clone(fid_card_container)

listCard.forEachIndexed { index, card ->
    val marginTop = when (index) {
        0 -> 0
        else -> (listCard[index -1] as ViewGroup).height / 4
    }

    val rootId = if (index == 0) containerId else (index - 1)

    set.connect(card.getId(), TOP, rootId, TOP, marginTop)
    set.connect(card.getId(), ConstraintSet.START, containerId, ConstraintSet.START, 0)
    set.connect(card.getId(), ConstraintSet.END, containerId, ConstraintSet.END, 0)
    card.setOpen(false)
}

// Apply the changes
set.applyTo(fid_card_container)

Есть идеи, зачем мне применять любой тайм-аут между добавлением Childs в ConstraintLayout и затем добавлением Constraints?

Есть ли лучшее решение, что это уродливый TimeOut?Спасибо

1 Ответ

0 голосов
/ 19 декабря 2018

Я нашел лучший способ.

Похоже, что создание ограничений должно выполняться в потоке пользовательского интерфейса.Вот почему он работает с timeout.

Итак, я изменил вызов timeout с помощью вызова Anko:

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