全宽的 RecyclerView GridLayoutManager header
RecyclerView GridLayoutManager with full width header
我正在使用一个非常有用的示例 here 来显示 RecyclerView 和 GridLayoutManager 来显示带有 header 的网格。
看起来不错,但我的图形设计师希望 header 项目占据 RecyclerView 的整个宽度。现在有填充。
当我设置 GridLayoutManager 时,我添加了填充(我仍然想要其他网格项):[它使用 Xamarin C#]
var numColumns = myListView.MeasuredWidth / tileSizeMax;
myGridView.SetPadding(tilePadding, tilePadding, tilePadding, tilePadding);
layoutManager = new GridLayoutManager(Activity, numColumns);
myListView.SetLayoutManager(layoutManager);
那么,如何为 header 项目设置不同的内边距...或者让它自己绘制在内边距上?
试试这个:
mLayoutManager = new GridLayoutManager(this, 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.HEADER:
return 2;
case MyAdapter.ITEM:
default:
return 1;
}
}
});
并检查这些链接:
- RecyclerView: Grid with header
- Set span for items in GridLayoutManager using SpanSizeLookup
你可以做到
val spanSize = 2
val mLayoutManager = GridLayoutManager(yourContext, spanSize)
mLayoutManager.spanSizeLookup = object : SpanSizeLookup() {
override fun getSpanSize(position: Int): Int = when (position) {
0 -> spanSize
else -> 1
}
}
我正在使用一个非常有用的示例 here 来显示 RecyclerView 和 GridLayoutManager 来显示带有 header 的网格。
看起来不错,但我的图形设计师希望 header 项目占据 RecyclerView 的整个宽度。现在有填充。
当我设置 GridLayoutManager 时,我添加了填充(我仍然想要其他网格项):[它使用 Xamarin C#]
var numColumns = myListView.MeasuredWidth / tileSizeMax;
myGridView.SetPadding(tilePadding, tilePadding, tilePadding, tilePadding);
layoutManager = new GridLayoutManager(Activity, numColumns);
myListView.SetLayoutManager(layoutManager);
那么,如何为 header 项目设置不同的内边距...或者让它自己绘制在内边距上?
试试这个:
mLayoutManager = new GridLayoutManager(this, 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.HEADER:
return 2;
case MyAdapter.ITEM:
default:
return 1;
}
}
});
并检查这些链接:
- RecyclerView: Grid with header
- Set span for items in GridLayoutManager using SpanSizeLookup
你可以做到
val spanSize = 2
val mLayoutManager = GridLayoutManager(yourContext, spanSize)
mLayoutManager.spanSizeLookup = object : SpanSizeLookup() {
override fun getSpanSize(position: Int): Int = when (position) {
0 -> spanSize
else -> 1
}
}