GridLayoutManager设置列数和行数

时间:2016-11-25 17:22:35

标签: android android-recyclerview gridlayoutmanager

我使用GridLayoutManager RecyclerView GridLayoutManager.HORIZONTAL方向。 SpanCount对我来说不正常,因为它取决于布局方向,但我知道我需要多少列和行。我怎么能这样做?

从文档到setSpanCount(int spanCount)

/**
 * Sets the number of spans to be laid out.
 * <p>
 * If {@link #getOrientation()} is {@link #VERTICAL}, this is the number of columns.
 * If {@link #getOrientation()} is {@link #HORIZONTAL}, this is the number of rows.
 *
 * @param spanCount The total number of spans in the grid
 * @see #getSpanCount()
 */

示例:我的RecyclerView大小为match_parent,如果我有9个项目,我有网格3x3,如果我有5个项目,我有网格3x2,但我想要2x3。

P.S。我不想设置GridLayoutManager.VERTICAL布局方向。

截图不正确,我想要网格2x3。

it is not correct for me

2 个答案:

答案 0 :(得分:0)

您应该根据数据大小动态设置跨度计数。

gridLayoutManager.setSpanCount( (int) Math.ceil( data.size() / 3f ) );

因此,对于7,8和9项,您有3行。适用于4,5和6,2行,依此类推。 使用float(3f)很重要,这样你的部门就不会被截断。

答案 1 :(得分:0)

创建一个自定义GridlayoutManager,同时使用以下功能解决类似的问题。

为RecyclerView的子级创建默认的LayoutParams对象。

它由@Value("#{'${string-values}'.split('\\s*,\\s*')}") private List<String> textList; 和另外3个功能组成,用于为layoutmanager设置特定的(固定的)布局参数。这允许设置行和列的特定计数。

链接相同:-https://gist.github.com/KaveriKR/04bfef5ffc9c00a8b6fca503da497322

编码愉快!