如何在Gridlayout中使第一张图像更大?

roc*_*ght 7 android gridlayoutmanager android-recyclerview

确切地说,我想实现这一目标. 在此输入图像描述

我正在使用recyclerview和GridLayoutManager.我还使用以下代码使第一个项目变大

        lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int i) {
            if (i==0) return 2;
            else return 1;
        }
    });
Run Code Online (Sandbox Code Playgroud)

一切正常,除了一个:位置1处的项目(即大图像中的下一个项目)垂直拉长以匹配大项目的高度.从第3行开始,所有图像都如图所示.

我怎么能摆脱这个?

编辑:经过一番分析

所以问题似乎是大图像水平地采用两个跨度但垂直单跨,因为我强迫我的ImageView是方形的,看起来它也采取了两行,实际上它是一行.由于这个原因,第二个图像看起来很长.

所以现在我的问题是,如何使网格项垂直两个跨度和两个水平跨度?

Ama*_*ila 5

尝试使用StaggeredGridLayoutManager而不是GridLayoutManagerStaggeredGridLayoutManager支持水平和垂直布局以及反向布局子项的能力。 适配器的onBindViewHolder方法,您可以使用此代码根据项目的位置设置跨度

final ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();    
if (position == 0) {
                StaggeredGridLayoutManager.LayoutParams sglp = (StaggeredGridLayoutManager.LayoutParams) lp;
                sglp.setFullSpan(true);
                holder.itemView.setLayoutParams(sglp);
            }
Run Code Online (Sandbox Code Playgroud)

找到例子http://enoent.fr/blog/2015/01/18/recyclerview-basics/ ...希望它会帮助你