我如何才能拥有2 x 2可滚动网格?我应该使用哪种控制?
我尝试过网格视图,因为网格视图不能有固定的行,所以我应该使用表格布局还是网格布局?或在网格视图中使用线性布局?
我想要显示图像而不缩小或放大,所以我使用AUTO_FIT,我得到三行以下代码,但我只想要两行和两列
@Override public View getView(int position, View convertView, ViewGroup parent)
{
ImageView view;
if (convertView == null)
{
view = (ImageView) convertView;
view = new ImageView(context);
view.setAdjustViewBounds(true);
view.setLayoutParams(new GridView.LayoutParams(GridView.AUTO_FIT, GridView. AUTO_FIT));
}
else
view = (ImageView) convertView;
String url = getItem(position);
Picasso.with(context).load(url).error(R.mipmap.no_photo).fit().into(view);
return view;
}
以下是附加图片样本
答案 0 :(得分:2)
我建议你使用RecyclerView
和GridLayoutManager
。这将允许您指定列数:
recyclerView.setLayoutManager(new GridLayoutManager(context, 2));
如果您想设置行高以使两行始终与屏幕高度匹配,则可以在适配器的onBindView()
内进行设置。您可以通过从Toolbar
:
//Could calculate this in your `Activity` class and pass the value to your Adapter
public int getProprtionalRowHeight() {
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
return ((height - toolbar.getHeight()) / 2);
}
在适配器中:
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
//...
ViewGroup.LayoutParams params = holder.itemView.getLayoutParams();
params.height = valueReturnedFromGetProprtionalRowHeight;
holder.itemView.setLayoutParams(params);
}
答案 1 :(得分:1)
您可以将StaggeredGrid用于此目的,其稳定且易于使用。 您还可以将StaggeredGridLayoutManager与回收站视图一起使用。