android – StaggeredGridLayout在向上滚动时搞砸了

我为我的RecyclerView制作了这个StaggeredGridLayout:

enter image description here

这是代码

 @Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder,final int position) {

    Photo photo = mPhotos.get(position);

    TextView titleView = ((CellViewHolder) viewHolder).titleTextView;
        titleView.setText(photo.getTitle());

    TextView subTitleView = ((CellViewHolder) viewHolder).subtitleTextView;
        subTitleView.setText(photo.getName());

    Picasso.with(mContext).load(photo.getPhotoUrl()).into(((CellViewHolder) viewHolder).imageView);

    ImageView userImageOverlay = ((CellViewHolder) viewHolder).userImageOverlay;

    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams();

    if (position == 0 || position % 4 == 0) {
        layoutParams.setFullSpan(true);
        layoutParams.height = Math.round(Utils.convertDpToPixel(202.67f,mContext));
        titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP,21.67f);
        subTitleView.setTextSize(TypedValue.COMPLEX_UNIT_SP,12.00f);
        userImageOverlay.setVisibility(View.VISIBLE);
    } else if ((position - 1) % 4 == 0) {
        layoutParams.setFullSpan(false);
        layoutParams.height = Math.round(Utils.convertDpToPixel(360.00f,15.00f);
        subTitleView.setTextSize(TypedValue.COMPLEX_UNIT_SP,10.00f);
        userImageOverlay.setVisibility(View.GONE);
    } else {
        layoutParams.setFullSpan(false);
        layoutParams.height = Math.round(Utils.convertDpToPixel(180.00f,10.00f);
        userImageOverlay.setVisibility(View.GONE);
    }
}

除非我将它向上滚动,否则一切正常.它按位置按降序绘制单元格,并在网格中留下空白区域:

enter image description here

任何想法如何保持相同的模式甚至滚动它?

最佳答案
试试这个:

StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
manager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS);
recyclerView.setLayoutManager(manager);

或:change position when scrolling

或者:github项目Picasso/Glide-RecyclerView-StaggeredGridLayoutManager

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...