android - RecyclerView项目以编程方式发布

问题描述 投票:0回答:1

我正在尝试使用Anko库以编程方式创建RecyclerView项目,我想在一个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(),但我已经尝试过 - 不起作用。

android android-recyclerview android-relativelayout anko
1个回答
0
投票

您是否尝试在更新规则后使用updateViewLayout

这是一个例子:https://stackoverflow.com/a/6801082/6055194

© www.soinside.com 2019 - 2024. All rights reserved.