Android GridLayoutManager设置列和行计数

Android GridLayoutManager设置列和行计数,android,android-recyclerview,gridlayoutmanager,Android,Android Recyclerview,Gridlayoutmanager,我将GridLayoutManager用于RecyclerView和GridLayoutManager.HORIZONTAL方向。SpanCount对我来说不能正常工作,因为它取决于布局方向,但我知道需要多少列和行。我怎么能做到 从文档到设置span计数(int spanCount): /** *设置要布置的跨距数。 * *如果{@link#getOrientation()}是{@link#VERTICAL},则这是列数。 *如果{@link#getOrientation()}是{@link#H

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

从文档到设置span计数(int spanCount):

/**
*设置要布置的跨距数。
*
*如果{@link#getOrientation()}是{@link#VERTICAL},则这是列数。
*如果{@link#getOrientation()}是{@link#HORIZONTAL},则这是行数。
*
*@param spanCount网格中的跨度总数
*@see#getSpanCount()
*/
示例:我的
RecyclerView
大小是
match\u parent
,如果我有9个项目,我有网格3x3,如果我有5个项目,我有网格3x2,但我想要2x3

另外,我不想设置
GridLayoutManager.VERTICAL
布局方向

在屏幕截图是不正确的,我想网格2x3


您应该根据数据大小动态设置范围计数

gridLayoutManager.setSpanCount( (int) Math.ceil( data.size() / 3f ) );
因此,对于7、8和9项,您有3行。对于4、5和6、2行,依此类推。
使用float(3f)非常重要,这样您的除法就不会被截断。

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

gridLayoutManager.setSpanCount( (int) Math.ceil( data.size() / 3f ) );
因此,对于7、8和9项,您有3行。对于4、5和6、2行,依此类推。
使用float(3f)非常重要,这样您的分区就不会被截断。

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

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

它包括
generateDefaultLayoutParams
和另外3个函数,用于为layoutmanager设置特定(固定)布局参数。这允许为行和列设置特定计数

相同的链接:-


快乐编码

使用以下功能解决类似问题时,创建了自定义GridlayoutManager

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

它包括
generateDefaultLayoutParams
和另外3个函数,用于为layoutmanager设置特定(固定)布局参数。这允许为行和列设置特定计数

相同的链接:-


快乐编码

当它说4-6个项目时,它在行之间留有空间。我想做同样的事情,但是
3f
必须是动态的,我怎么能得到这个呢?我不知道。当它说4-6个项目时,它在行之间留下了空间。我想做同样的事情,但是
3f
必须是动态的,我怎么能得到这个呢?我不懂。