Android瀑布流设置单独某个Item占据一整行

2021-10-18  本文已影响0人  寻水的鱼Chock

我们可以给RecycleView设置不同的布局管理器,例如GridLayoutManager和StaggeredGridLayoutManager。以此来实现不同的列表排列效果。其中StaggeredGridLayoutManager即是我们常说的瀑布流式布局效果。

使用GridLayoutManager比较多的同学会发现,它可以通过设置setSpanSizeLookup()动态的控制Item每一行占据的列数,实现多样的布局效果,但是StaggeredGridLayoutManager并没有,即使它名字是那么的相似。

那如何在实现瀑布流式布局时,动态是设置使其占据一整行呢?

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    val lp = holder.itemView.layoutParams
    if (getItemViewType(position) == VIEW_TYPE_FIRST_ITEM) {//判断是否需要占据整行
        if (lp is StaggeredGridLayoutManager.LayoutParams) {
            lp.isFullSpan = true
        }
    } else {
        if (lp is StaggeredGridLayoutManager.LayoutParams) {
            lp.isFullSpan = false
        }
    }
}

其设置生效的关键就是函数StaggeredGridLayoutManager.LayoutParams.setFullSpan(true)的调用。

上一篇下一篇

猜你喜欢

热点阅读