RecyclerView 非spanCount偶数倍item的居
2019-01-22 本文已影响0人
邻山有木
最近项目有个需求,大致就是:需要将列表中item居中
最终效果.jpg接下来自然是百度:setSpanSizeLookup,这个方法决定item占据了多少列宽。
SpanCount:每行的列数,就是下图GridLayoutManager的第二个参数
spanSize:item所占的列数
如:我每行最多两列,我需要第三个item占据一行,那么我就判断当position等于2时,spanSize为SpanCount,我占据的列数等于总列数,那么这个item就占据一行了
上代码
final GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
int spanSize = 0;
//spanSize的长度为item所占的列数,最终的spanSize为spanCount/spanSize,结果才是真正的spanSize
if (mUserinfo.getData().size() == 3) {
spanSize = position == 2 ? layoutManager.getSpanCount() : 1;
Log.d(TAG, "getSpanSize: " + spanSize);
}
return spanSize;
}
});
layoutManager.setAutoMeasureEnabled(true);
recyclerView.setLayoutManager(layoutManager);
ArrayList<xxx> dataBeans = new ArrayList<>();
int userSize = mUserinfo.getData().size();
for (int i = 0; i < userSize; i++) {
...
}
Adapter adapter = new Adapter(R.layout.adapter_match_head, dataBeans);
recyclerView.setAdapter(adapter);
然鹅:他仍然是这个样子的
IMG_20190122_174258.jpg木得法子,继续百度,然后找到了 这个
这个方法需要在设置Adapter之后才会启用,否则是无效的,so,只需要将上方代码的setAdapter方法移至 layoutManager.setSpanSizeLookup上方就OJBK了,图就不贴了,第一张图就是最终的结果图,还有啥问题可以留言或者直接联系我,至于现在,我要下班了哈哈哈