我正在使用带有GridLayoutManager
的RecyclerView
来以网格形式显示一些项目。它工作得很好,并在网格内显示2列项目。
但是,当项目数量为奇数时,我希望最后一个项目的宽度与RecyclerView
的宽度相同,即占据整个宽度。
是否有任何方法可以使用GridLayoutManager
来实现这一点,或者我必须构建自定义设计?
请帮忙。
我正在使用带有GridLayoutManager
的RecyclerView
来以网格形式显示一些项目。它工作得很好,并在网格内显示2列项目。
但是,当项目数量为奇数时,我希望最后一个项目的宽度与RecyclerView
的宽度相同,即占据整个宽度。
是否有任何方法可以使用GridLayoutManager
来实现这一点,或者我必须构建自定义设计?
请帮忙。
您可以使用GridLayoutManager
的layoutManager.setSpanSizeLookup
方法。
以下是使用该方法的步骤:
final GridLayoutManager layoutManager = new GridLayoutManager(context, 2);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (mAdapter != null) {
switch (mAdapter.getItemViewType(position)) {
case 1:
return 1;
case 0:
return 2; //number of columns of the grid
default:
return -1;
}
} else {
return -1;
}
}
});
现在您需要在适配器中确定viewType
@Override
public int getItemViewType(int position) {
return (position == getItemCount() - 1) ? 0 : 1; // If the item is last, `itemViewType` will be 0
}
继续打造更好的应用程序!!