我使用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。
答案 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
编码愉快!