Android:如何在GridView或RecyclerView中形成1-2-1列表项?
我试图在回收器或网格视图中实现以下列表项的形成:Android:如何在GridView或RecyclerView中形成1-2-1列表项?,android,gridview,android-recyclerview,Android,Gridview,Android Recyclerview,我试图在回收器或网格视图中实现以下列表项的形成: 1 1 1 1 1 1 1 其中1是一个视图持有者(列表项)。我的列表项都具有相同的宽度和高度 我尝试将recyclerview与网格布局管理器一起使用,如下所示: recyclerView.setLayoutManager(new GridLayoutManager(getContext(),2)); 但这将严格显示2列 我已经尝试过在我的recyclerView中使用StaggedGridLayoutManager,如下所示: St
1
1 1
1
1 1
1
其中1
是一个视图持有者(列表项)。我的列表项都具有相同的宽度和高度
我尝试将recyclerview与网格布局管理器一起使用,如下所示:
recyclerView.setLayoutManager(new GridLayoutManager(getContext(),2));
但这将严格显示2列
我已经尝试过在我的recyclerView
中使用StaggedGridLayoutManager
,如下所示:
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
但这只会将我的列表项扩展到两列列表,类似于GridLayoutManager
。
我还尝试在适配器中更改1/3列表视图的宽度,但一个视图的宽度不会影响另一个视图的位置
当前设置如下所示:
adapterPre = new CategoryListAdapter(this, getContext(),GeneralUtils.isLoggedIn());
RecyclerView premadeLists = view.findViewById(R.id.practise_recycler);
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),2);
gridLayoutManager.setSpanSizeLookup(new CustomSpanSizeLookup());
premadeLists.setLayoutManager(gridLayoutManager);
premadeLists.setHasFixedSize(false);
premadeLists.setAdapter(adapterPre);
CustomSpanSizeLookup
:
class CustomSpanSizeLookup extends GridLayoutManager.SpanSizeLookup {
@Override
public int getSpanSize(int position) {
return position % 2 == 0 ? 2 : 1;
}
}
您必须使用具有2个跨距的
GridLayoutManager
,并创建一个自定义GridLayoutManager.SpanSizeLookup
:
class CustomSpanSizeLookup extends GridLayoutManager.SpanSizeLookup {
@Override
public int getSpanSize(int position) {
return position % 2 == 0 ? 2 : 1;
}
}
class CustomSpanSizeLookup扩展了GridLayoutManager.SpanSizeLookup{
@凌驾
公共整数getSpanSize(整数位置){
/*三分之一的项目将占据整行,
*三分之二的项目将占据半排并且可以
*因此,应将其相邻放置。
*/
返回位置%3==0?2:1;
}
}
您可以使用以下方法在GridLayoutManager
上进行设置:
layoutManager.setPansizeLookup(新的CustomSpanSizeLookup());
我应该使用GridView
而不是RecyclerView
来进行此操作吗?不,应该使用RecyclerView
@keswarker。您的单元格的宽度是否为匹配\u parent
?GridLayoutManager
的方向是垂直的?它的跨度大小是否为2?好的,在使单元格宽度匹配父视图后,有些视图是父视图的宽度,但有些视图是宽度的一半。这不是我所需要的。我需要两个相邻的视图,而不是一个视图占用两个视图的空间,对不起,好吧,我现在明白了,如果我更改位置%2==0?2:1到位置%3==0?2:1
性能如期,非常感谢:)