网格回收器视图,children wrap_content
Grid Recycler View, children wrap_content
我将 RecyclerView 用于两列,我希望 children 视图的高度根据其内容调整,
但默认情况下 children 视图会调整到行的最长高度。我在回收站视图中有列表视图,它的大小已调整为其 children 的高度。
ItemAdapter adapter = (ItemAdapter) holder.mItemList.getAdapter();
if(adapter == null){
adapter = new ItemAdapter(mItems.get(position));
holder.mItemList.setAdapter(adapter);
}
else
adapter.setItems(mItems.get(position));
adapter.notifyDataSetChanged();
holder.mItemList.invalidateViews();
setListViewHeightBasedOnItems(holder.mItemList);
是否有任何简单的方法可以使视图适合,或者我必须创建自己的两列布局,类似于 iOS 中的 collection view?
在我的例子中,我想在两列中查看两个大小相同的图像,我使用下面的代码做到了。
// inner class to hold a reference to each item of RecyclerView
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon);
int colSpan = 2;
imgViewIcon.getLayoutParams().height = (int) (displayMetrics.widthPixels / colSpan);
imgViewIcon.getLayoutParams().width = (int) (displayMetrics.widthPixels / colSpan);
}
}
您可以放置 itemLayoutView 而不是 imgViewIcon,然后设置布局参数(宽度和高度)。
我将 RecyclerView 用于两列,我希望 children 视图的高度根据其内容调整,
但默认情况下 children 视图会调整到行的最长高度。我在回收站视图中有列表视图,它的大小已调整为其 children 的高度。
ItemAdapter adapter = (ItemAdapter) holder.mItemList.getAdapter();
if(adapter == null){
adapter = new ItemAdapter(mItems.get(position));
holder.mItemList.setAdapter(adapter);
}
else
adapter.setItems(mItems.get(position));
adapter.notifyDataSetChanged();
holder.mItemList.invalidateViews();
setListViewHeightBasedOnItems(holder.mItemList);
是否有任何简单的方法可以使视图适合,或者我必须创建自己的两列布局,类似于 iOS 中的 collection view?
在我的例子中,我想在两列中查看两个大小相同的图像,我使用下面的代码做到了。
// inner class to hold a reference to each item of RecyclerView
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon);
int colSpan = 2;
imgViewIcon.getLayoutParams().height = (int) (displayMetrics.widthPixels / colSpan);
imgViewIcon.getLayoutParams().width = (int) (displayMetrics.widthPixels / colSpan);
}
}
您可以放置 itemLayoutView 而不是 imgViewIcon,然后设置布局参数(宽度和高度)。