首页 > 解决方案 > 根据父宽度设置recyclerview子宽度相等

问题描述

我想创建一个使用 recyclerview 水平对齐的视图列表。我想平均分割 recyclerview 的宽度,以便所有这些视图都可以放在一行内。观看次数是动态的

这是一个简单的最终结果,我使用 HTML 和 CSS 创建了它。

演示图像

我可以使用 recyclerview 在 android 中实现相同的功能吗?

以下是我的 recyclerview 适配器,holder.root是每个视图的容器。我正在考虑获取 recyclerview 宽度并将其除以视图数量并将该值设置为每个视图的宽度。

class ThreadsAdapter(
    private val threads: ArrayList<ThreadInfo>
): RecyclerView.Adapter<ThreadsAdapter.ViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.layout_progress_thread, parent, false)
        return ViewHolder(view)
    }

    override fun getItemCount(): Int {
        return threads.size
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.root.layoutParams.width = 40 // just testing
    }


    class ViewHolder(v: View): RecyclerView.ViewHolder(v) {
        val progressBar: ProgressBar = v.findViewById(R.id.progressBar)
        var root: ConstraintLayout = v.findViewById(R.id.root)
    }
}

标签: androidandroid-recyclerview

解决方案


最终,我在 Github 上找到了这个库,允许我在 android 中使用 Flexbox 布局

https://github.com/google/flexbox-layout


推荐阅读