当使用2个或更少的孩子时,带有GridLayoutManager子元素高度的android recyclelerview适合父级

时间:2015-11-19 17:39:56

标签: android height android-recyclerview

当更改spanCount时,RecyclerView会更改子宽度:

GridLayoutManager manager = new GridLayoutManager(getActivity(), 2);

GNU Make manual

GridLayoutManager manager = new GridLayoutManager(getActivity(), 1);

RecyclerView with 2 columns

我的问题是,有没有办法有相同的行为,但身高可让我适合父母身高的孩子?

如果您看到普通图片,则2个项目下方有一个空格,但此RecyclerView上没有更多项目。我想用当前项目的所有空间。

1 个答案:

答案 0 :(得分:0)

在onCreateViewHolder中,使用ViewHolder创建子视图。我所做的是向ViewHolder构造函数发送父级(recyclerView)高度,然后更改ViewHolder大小:

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_list_item, parent, false);
    if(getItemCount()<3){
        return new ViewHolder(rowView, this.onItemClickListener,parent.getHeight());
    }
    return new ViewHolder(rowView, this.onItemClickListener);
}



 public ViewHolder(View itemView, OnItemClickListener onClickListener,int height) {
        super(itemView);
        ButterKnife.bind(this, itemView);
        this.onClickListener = onClickListener;
        itemView.setOnClickListener(this);
        this.view.setMinimumHeight(height);
    }

this.view是groupView。

我不知道这是最好的方法,但现在有效!