这个问题可能是由于在 onLayoutChildren() 方法中执行滚动操作导致的。因为该方法会在每次布局子 View 时被调用,如果频繁地进行滚动操作,就会导致屏幕上下闪烁。
为了解决这个问题,可以将滚动操作放到 RecyclerView 的消息队列中,等待布局完成后再执行。具体来说,可以使用 RecyclerView 的 post() 方法来实现:
```kotlin
override fun onLayoutChildren(recycler: RecyclerView.Recycler?, state: RecyclerView.State?) {
super.onLayoutChildren(recycler, state)
var totalHeight = 0
for (i in 0 until childCount) {
val child = getChildAt(i)
totalHeight += child?.height ?: 0
}
if (totalHeight > height) {
mRvChat.postDelayed({ mRvChat.smoothScrollToPosition(itemCount - 1) }, 100)
}
}
```
这里使用了 postDelayed() 方法,将滚动操作延迟 100 毫秒执行。这样可以确保布局完成后再进行滚动,避免屏幕上下闪烁的问题。你可以根据实际情况调整延迟时间。