为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

1 回答

http://img1.sycdn.imooc.com//59ca0aa300010f6506530317.jpg

首先这里的linewidth是变量用于记录已经测量的childview的宽度,用于下一次循环的。假设满足你想写else,那么你else里写的应该就是

if (childWidth + lp.leftMargin + lp.rightMargin + lineWidth > width){  
   // 记录这一行所有的View以及最大高度  
   mLineHeight.add(lineHeight);  
   // 将当前行的childView保存,然后开启新的ArrayList保存下一行的childView  
   mAllViews.add(lineViews);  
   lineWidth = 0;// 重置行宽  
   lineViews = new ArrayList<View>();  
  }else{
    lineWidth += childWidth + lp.leftMargin + lp.rightMargin;  
    lineHeight = Math.max(lineHeight, childHeight + lp.topMargin+ lp.bottomMargin);  
    lineViews.add(child);  
   }

如果你想写else会这样吧,但是你可以考虑一下那if语句里还能这么写么,这样写你显示的时候发现你少数据,为什么,因为当if语句成立时lineWidth 就是下一行的宽度了,那这里就不能赋值为0,而是赋值为当前不能添加的child view(另一行)的宽度加上margin的长度,这两种效果是一样的,只不过这里是这样写了,

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
打造Android中的流式布局和热门标签
  • 参与学习       30485    人
  • 解答问题       56    个

酷炫的热门标签到底是怎么实现的呢,本教程会给你答案

进入课程
意见反馈 帮助中心 APP下载
官方微信