android - 垂直 GridLayoutManager 中的动态子宽度
问题描述
我有一张要在 RecyclerView 中显示的表格。目前我正在使用垂直方向的 GridLayoutManager。由于我所有的逻辑都依赖于 GridLayoutManager 的垂直方向,因此我无法切换到水平方向或 StaggeredLayoutManager。有没有办法改变 RecyclerView 子项度量,以便每行的第一个单元格可以有不同的宽度?
解决方案
我建议您使用SpanSizeLookup。
像这样的东西:
GridLayoutManager manager = new GridLayoutManager(context, 2);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(adapter.getItemViewType(position)) {
// first cell type
case 1:
return 1;
default:
return 2;
}
}
});
在您的适配器中,您应该getItemViewType
为您的单元格覆盖并返回不同的类型。
推荐阅读
- amazon-web-services - 端口 80 和 443 关闭
- shell - 使用 awk 在输出中添加自定义列
- python - 尝试将 json 文件加载到扁平化的 pandas DataFrame 中
- bluez - 使用随机地址设置 BlueZ GATT 服务器?
- django - django 对值或函数值求和
- ios - 反转 CGRect - Swift
- javascript - 为什么变量仍然可以访问?
- javascript - getJSON - 如何打印结果,以及如何检索输入?
- reactjs - 在等待使用 ES7 语法的 API 调用时,使用 React setState 显示加载微调器的正确方法是什么?
- regex - Vim 语法用空格突出显示两个特定的单词(正则表达式)