Android動態設定RecyclerView中Item的間距(使用ItemDecoration)
阿新 • • 發佈:2021-01-08
動態設定RecyclerView的Item的間距,使其各部分間距相等
WorkAdapter.kt
class WorkAdapter : BaseQuickAdapter<Work, BaseViewHolder>(R.layout.store_mine_recycler_item) {
override fun convert(holder: BaseViewHolder, item: Work) {
val iv = holder.getView<ImageView>(R.id.iv_thumb)
Glide.with(context)
.load(item.thumb)
.centerCrop()
.placeholder(R.mipmap.store_placeholder)
.error(R.mipmap.store_placeholder)
.into(iv)
}
}
class SpaceItemDecoration(var space: Int) : ItemDecoration() {
override fun getItemOffsets (
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
if (parent.getChildAdapterPosition(view) != 0) outRect.left = space
}
}
MainActivity
- binding.rvWorks.addItemDecoration(SpaceItemDecoration(SizeUtils.dp2px(24f)))
private fun initView() {
//作品列表
adapter = WorkAdapter()
adapter.setOnItemClickListener { _, _, position ->
val work = adapter.data[position]
MyWorkPreviewActivity.start(requireContext(), work)
}
binding.rvWorks.adapter = adapter
binding.rvWorks.addItemDecoration(SpaceItemDecoration(SizeUtils.dp2px(24f)))
binding.rvWorks.layoutManager =
LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
}