onlayout
为什么onlayout里面不是if...else,而是只有if?
为什么onlayout里面不是if...else,而是只有if?
2017-09-17
首先这里的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的长度,这两种效果是一样的,只不过这里是这样写了,
举报