Grid Recycler View,children wrap_content

时间:2015-03-26 09:40:28

标签: android gridview android-recyclerview

我使用RecyclerView两列,我希望子视图的高度根据其内容大小,
但默认情况下,子视图的大小调整为行的最长高度。我在listler视图中有listview,它被调整为子节点的高度。

                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

1 个答案:

答案 0 :(得分:1)

在我的情况下,我希望使用下面的代码在两列中查看两个相同大小的图像。

// 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,然后设置layoutParams(宽度和高度),而不是imgViewIcon。