ListView 和ScroolView同時(shí)使用計(jì)算高度時(shí)onmeasure報(bào)空指針的解決辦法
前言:
雖然Android 的設(shè)計(jì)者始終認(rèn)為L(zhǎng)istView、GridView+ScroolView組合使用并不是一種比較好的實(shí)現(xiàn)方法。但是在我們開(kāi)發(fā)過(guò)程中又會(huì)經(jīng)常使用到這樣的需求,特別是在適配小屏幕手機(jī)的時(shí)候又必須要用這種讓人不接受的設(shè)計(jì),下面就來(lái)說(shuō)一下在計(jì)算ListView或者GridView的過(guò)程中會(huì)出現(xiàn)onmeasure空指針的問(wèn)題。
解決辦法
當(dāng)我發(fā)現(xiàn)listItem.measure(0,0)報(bào)空指針異常的時(shí)候,第一反應(yīng)是listItem報(bào)空指針,然而debug調(diào)試過(guò)后發(fā)現(xiàn)其不為null,這個(gè)時(shí)候就比較費(fèi)解了。
通過(guò)查看官方API和一些資料查找后發(fā)現(xiàn)了幕后的原因,其主要原因跟Linearlayout的機(jī)制有關(guān),原因是因?yàn)橹挥蠰inearlayout重寫(xiě)了onmeasure這個(gè)方法,而android的其他的4種布局均沒(méi)有重寫(xiě)onmeasure方法,想到這里,這個(gè)問(wèn)題就不解自破了。既然要用到measure計(jì)算高度,那么我們就只能用Linearlayout布局了,所有解決這個(gè)問(wèn)題的辦法就是把你對(duì)應(yīng)的適配器(adapter)里的其他布局改成Linearlayout就OK了。
自從跟進(jìn)了這個(gè)問(wèn)題之后,我最近也在尋找新的方式取代這種ListView 和ScroolView同時(shí)使用的情況,研究出來(lái)后會(huì)第一時(shí)間分享給大家。希望這篇博客能幫助大家解決這個(gè)問(wèn)題。
總結(jié)
把a(bǔ)dapter中的布局改成Linearlayout即可。原因如上。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注