我为我的RecyclerView制作了这个StaggeredGridLayout:
这是代码:
@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);
}
}
除非我将它向上滚动,否则一切正常.它按位置按降序绘制单元格,并在网格中留下空白区域:
任何想法如何保持相同的模式甚至滚动它?
最佳答案
试试这个:
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
原文地址:https://www.jb51.cc/android/431322.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。