只适合LinearLayoutManager的情况下
fun setListViewHeight(listView: RecyclerView) {
var totalHeight = 0
//listAdapter.getCount()返回数据项的数目
var i = 0
val len: Int = listView.adapter?.itemCount!!
while (i < len) {
val childView =
listView.getLayoutManager()?.findViewByPosition(i)
val listItem = listView.getChildAt(i)
childView?.let {
totalHeight += it.width
}
i++
}
val params: ViewGroup.LayoutParams = listView.getLayoutParams()
params.height = totalHeight + listView.width * (imageAdapter?.itemCount!! - 1)
listView.setLayoutParams(params)
}
调用的时候
RecyclerView.post {
setListViewHeight(RecyclerView)
}
或者
RecyclerView.getViewTreeObserver()
.addOnGlobalLayoutListener {
setListViewHeight(RecyclerView)
}