老師您好,onLayout方法你的代碼寫的有誤
再做換行處理的時候重置行寬應該是lineWidth=childWidth(也就是子View的寬度),還需要重置view的集合的時候,你沒有把當前view加入到集合里面。你的代碼最后會導致每次換行丟失一個view
這是我的代碼處理?//記錄當前行的view
????mAllViews.add(LineViews);
????//記錄當前行的高度
????mLineHeight.add(lineHeight);
????//重置行寬和行高
????lineWidth=childWidth;
????lineHeight=childHeight;
????LineViews=new ArrayList<View>();
????LineViews.add(child);
這是你的代碼處理
// 記錄LineHeight
????mLineHeight.add(lineHeight);
????// 記錄當前行的Views
????mAllViews.add(lineViews);
????// 重置我們的行寬和行高
????lineWidth = 0;
????lineHeight = childHeight + lp.topMargin + lp.bottomMargin;
????// 重置我們的View集合
????lineViews = new ArrayList<View>();
?
2015-04-27
//===========我是這樣處理的=============//
if (lineWidth+childWidth>width-getPaddingLeft()-getPaddingRight()) {
????//記錄當前行的view
????mAllViews.add(LineViews);
????//記錄當前行的高度
????mLineHeight.add(lineHeight);
????//重置行寬和行高
????lineWidth=childWidth;
????lineHeight=childHeight;
????LineViews=new ArrayList<View>();
????LineViews.add(child);
????
???}else{
????lineWidth+=childWidth;
????lineHeight=Math.max(lineHeight, childHeight);
????LineViews.add(child);
???}
//===========你是這樣處理的=============//
if (childWidth + lineWidth + lp.leftMargin + lp.rightMargin > width - getPaddingLeft() - getPaddingRight())
???{
????// 記錄LineHeight
????mLineHeight.add(lineHeight);
????// 記錄當前行的Views
????mAllViews.add(lineViews);
????// 重置我們的行寬和行高
????lineWidth = 0;
????lineHeight = childHeight + lp.topMargin + lp.bottomMargin;
????// 重置我們的View集合
????lineViews = new ArrayList<View>();
???}
???lineWidth += childWidth + lp.leftMargin + lp.rightMargin;
???lineHeight = Math.max(lineHeight, childHeight + lp.topMargin
?????+ lp.bottomMargin);
???lineViews.add(child);
非常抱歉,沒仔細看你的代碼,你的代碼沒錯,再次向您表達歉意
2015-04-27
老師我又看了你的代碼,發(fā)現(xiàn)你沒有if()else{}語句(換行處理,不換行處理),所以不存在這種問題,抱歉