android RecyclerView瀑布流错乱 顶部留白的解决方案

RecyclerView瀑布流错乱 顶部留白的解决方案

解决方案方案分为三步:

  1. layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE)

  2. 实际上解决错乱与留白的问题 主要原因在于加载更多数据之后 使用的是notifyDataSetChanged()该方法将刷新一整个Recycleview的数据;所以解决方案将 notifyDataSetChanged()替换成 notifyItemRangeInserted(int positionStart, int itemCount)进行新增数据局部刷新。

  3. 根据图片宽高设置布局ImageView的LayoutParams

ViewGroup.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        if (width != -1 && height != -1) {
            layoutParams.height = viewWidth * height / width;
            layoutParams.width = viewWidth;
        } else {
            layoutParams.height = viewWidth;
            layoutParams.width = viewWidth;
        }
        simpleDraweeView.setLayoutParams(layoutParams);

解决顶部留白:

reGemeType.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                //防止第一行到顶部有空白区域
                mWrapContentGridLayoutManager.invalidateSpanAssignments();
                
            }

            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);

            }
        });
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值