通过重写RecyclerView.LayoutManager实现
直接使用该LayoutManger即可
package com.example.testrecy.test
import android.util.Log
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.Recycler
class MyLayoutManager : RecyclerView.LayoutManager() {
private var looperEnable = true
override fun generateDefaultLayoutParams(): RecyclerView.LayoutParams {
return RecyclerView.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
}
override fun canScrollHorizontally(): Boolean {
return false
}
override fun canScrollVertically(): Boolean {
return true
}
override fun onLayoutChildren(
recycler: Recycler,
state: RecyclerView.State
) {
if (itemCount <= 0) {
return
}
//preLayout主要支持动画,直接跳过
if (state.isPreLayout) {
return
}
//将视图分离放入scrap缓存中,以准备重新对view进行排版
detachAndScrapAttachedViews(recycler)
var actualHeight = 0