【发布时间】:2018-02-22 08:53:12
【问题描述】:
我正在尝试使用 RecyclerView 和 GridLayoutManager 来显示项目列表。
以下是我想要满足的标准:
- 每一行都有
spanCount指定的项目数 - 每个项目占据屏幕的相等部分,它们一起填满整个屏幕。
- 项目的高度由其宽度和指定的比例决定。
我发现如果我在项目视图上设置android:layout_width="match_parent",那么项目宽度将通过将RecyclerView的宽度除以spanCount来设置。
问题是我不知道让项目的高度与布局管理器确定的宽度成正比。
我唯一的解决方案是放弃布局管理器进行测量,并在onBindViewHolder 中明确设置项目尺寸:
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false);
ViewGroup.LayoutParams p = v.getLayoutParams();
p.width = parent.getWidth() / mLayoutManager.getSpanCount();
p.height = p.width * 3/2;
v.setLayoutParams(p);
return new MyViewHolder(v);
}
我将不胜感激任何可以帮助我改进解决方案的建议。
【问题讨论】:
标签: android android-recyclerview gridlayoutmanager