【发布时间】:2016-12-20 11:22:43
【问题描述】:
我正在尝试使最后一行的项目在回收站视图中居中水平。我正在使用GridLayoutManager 来实现该功能。使用setSpanSizeLookup,我想调整最后一行的跨度大小,正如 SO 上的帖子所指出的那样,但不幸的是我无法跟踪当前正在填充哪一行,所以我的逻辑不起作用。
我想要实现的是:
代码:
static private int NUM_OF_COLUMNS = 3;
final GridLayoutManager manager = new GridLayoutManager(getBaseActivity(), NUM_OF_COLUMNS);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
int rowNum = 0;
@Override
public int getSpanSize(int position) {
int spanSize = 1;
if(position == 0)
rowNum = 0; //reset it
//check if it is last row
int numOfRows = (int) Math.ceil((double) list.size() / NUM_OF_COLUMNS);
if(rowNum == numOfRows - 1) {
//get num of items in last row
int items = list.size() - (NUM_OF_COLUMNS * rowNum);
if(items == 1)
spanSize = 3;
}
if(rowNum % NUM_OF_COLUMNS == 0) //if last element
rowNum++;
return spanSize;
}
});
recyclerView.setLayoutManager(manager);
上面的代码是管理行号,因为我不知道如何获取网格的当前行和列位置。谁能指出正确的方向?谢谢。
【问题讨论】:
-
搞清楚了吗?
-
@lostintranslation 不。我知道你需要为这个问题制作自己的布局管理器。
标签: android android-recyclerview gridlayoutmanager