Android - RecyclerView элемент программно выдает - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь создать элемент RecyclerView программно, используя библиотеку Anko, и я хочу сделать все это в одном RelativeLayout для лучшей производительности.

Название моего предмета должно быть match_parent, но оно не должно охватывать маркер флага (hasImportantMessages) или число справа (issues counter), поэтому я использую этот код для настройки RelativeLayout правила:

with(tvTitle.layoutParams as RelativeLayout.LayoutParams) {
        removeRule(START_OF)
        removeRule(ALIGN_PARENT_END)

        when {
            hasImportantMessages -> addRule(START_OF, R.id.iv_important_messages)
            issueCounter > 0 -> addRule(START_OF, R.id.tv_issues_counter)
            else -> addRule(ALIGN_PARENT_END)
        }
    }

Когда RecyclerView создает первые видимые ViewHolders, все в порядке, но когда я немного прокручиваю вниз и RecyclerView начинает повторно использовать его держатели, у меня возникают некоторые проблемы с этим, проверьте эти снимки экрана.

Good

Bad

Как видите, правила RelativeLayout не работают должным образом. Заголовок textView перекрывает маркер флага или выдает счетчик textView. Может быть, мне стоит как-то invalidate(), но я уже попробовал - не работает.

1 Ответ

0 голосов
/ 03 сентября 2018

Вы пытались использовать updateViewLayout после обновления правил?

Вот пример: https://stackoverflow.com/a/6801082/6055194

...