ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

安卓学习笔记-RecyclerView使用Glide加载网络图片瀑布流失效的情况以及item间距设置

2021-05-15 21:31:13  阅读:179  来源: 互联网

标签:Glide int 安卓 interval item LayoutParams params context holder


瀑布流失效问题

  •  RecycleView瀑布流用Glide加载网络图片会导致瀑布流失效,因为不知道网络加载的图片具体高度是多少;这时候我们可以手动设置图片高度,随机值,这样瀑布流就能正常使用了
@Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        ResultBeanData.ResultBean.HotInfoBean hotInfoBean = datas.get(position);
        //设置图片的高度,这个值根据情况设置,后面180是图片高度
        int mHeight = (int) (300+Math.random()*180);
        //获取LayoutParams
        ViewGroup.LayoutParams params = holder.iv_hot.getLayoutParams();
        //将LayoutParams即图片的高度设置为我们上面写的高度
        params.height = mHeight;
        //将这个高度重新赋给图片
        holder.iv_hot.setLayoutParams(params);
        Glide.with(mContext).load(Constants.IMAGE_URL+hotInfoBean.getFigure())
                .into(holder.iv_hot);
        holder.tv_name.setText(hotInfoBean.getName());
        holder.tv_price.setText(hotInfoBean.getCover_price());
    }

解决后效果图 

 

设置item项之间的间距

  • 写一个类
  • interval用于设置间距
class StaggeredDividerItemDecoration extends RecyclerView.ItemDecoration {
    private Context context;
    private int interval;

    public StaggeredDividerItemDecoration(Context context, int interval) {
        this.context = context;
        this.interval = interval;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
//        int position = parent.getChildAdapterPosition(view);
        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams();
        // 获取item在span中的下标
        int spanIndex = params.getSpanIndex();
        int interval = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                this.interval, context.getResources().getDisplayMetrics());
        // 中间间隔
        //放弃之前的方法。这里设置让左右一样列表左右切换导致中间距离出现问题
        outRect.left = interval/2;
        outRect.right =interval/2;

        // 下方间隔
        outRect.bottom = interval;
    }



}
  • 调用,这样就设置了每个项的左右间距13,上面间距13
  • recyclerView.addItemDecoration(new StaggeredDividerItemDecoration(mContext,13));

     

 

标签:Glide,int,安卓,interval,item,LayoutParams,params,context,holder
来源: https://blog.csdn.net/qq275467589/article/details/116863567

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有