課程
/移動(dòng)開(kāi)發(fā)
/Android
/打造Android中的流式布局和熱門(mén)標(biāo)簽
為什么onlayout里面不是if...else,而是只有if?
2017-09-17
源自:打造Android中的流式布局和熱門(mén)標(biāo)簽 1-3
正在回答
首先這里的linewidth是變量用于記錄已經(jīng)測(cè)量的childview的寬度,用于下一次循環(huán)的。假設(shè)滿(mǎn)足你想寫(xiě)else,那么你else里寫(xiě)的應(yīng)該就是
if?(childWidth?+?lp.leftMargin?+?lp.rightMargin?+?lineWidth?>?width){?? ???//?記錄這一行所有的View以及最大高度?? ???mLineHeight.add(lineHeight);?? ???//?將當(dāng)前行的childView保存,然后開(kāi)啟新的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);?? ???}
如果你想寫(xiě)else會(huì)這樣吧,但是你可以考慮一下那if語(yǔ)句里還能這么寫(xiě)么,這樣寫(xiě)你顯示的時(shí)候發(fā)現(xiàn)你少數(shù)據(jù),為什么,因?yàn)楫?dāng)if語(yǔ)句成立時(shí)lineWidth 就是下一行的寬度了,那這里就不能賦值為0,而是賦值為當(dāng)前不能添加的child view(另一行)的寬度加上margin的長(zhǎng)度,這兩種效果是一樣的,只不過(guò)這里是這樣寫(xiě)了,
舉報(bào)
酷炫的熱門(mén)標(biāo)簽到底是怎么實(shí)現(xiàn)的呢,本教程會(huì)給你答案
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-09-26
首先這里的linewidth是變量用于記錄已經(jīng)測(cè)量的childview的寬度,用于下一次循環(huán)的。假設(shè)滿(mǎn)足你想寫(xiě)else,那么你else里寫(xiě)的應(yīng)該就是
如果你想寫(xiě)else會(huì)這樣吧,但是你可以考慮一下那if語(yǔ)句里還能這么寫(xiě)么,這樣寫(xiě)你顯示的時(shí)候發(fā)現(xiàn)你少數(shù)據(jù),為什么,因?yàn)楫?dāng)if語(yǔ)句成立時(shí)lineWidth 就是下一行的寬度了,那這里就不能賦值為0,而是賦值為當(dāng)前不能添加的child view(另一行)的寬度加上margin的長(zhǎng)度,這兩種效果是一樣的,只不過(guò)這里是這樣寫(xiě)了,