Android ListView 和ScroolView 出現(xiàn)onmeasure空指針的解決辦法
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ì)本站的支持!
相關(guān)文章
Android無(wú)限循環(huán)RecyclerView的完美實(shí)現(xiàn)方案
這篇文章主要介紹了Android無(wú)限循環(huán)RecyclerView的完美實(shí)現(xiàn)方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Android中多個(gè)ContentProvider的初始化順序詳解
在日常Android開(kāi)發(fā)中經(jīng)常會(huì)寫(xiě)一些sdk來(lái)供他人或者自己調(diào)用,一般這些sdk都涉及到初始化,下面這篇文章主要給大家介紹了關(guān)于Android中多個(gè)ContentProvider的初始化順序的相關(guān)資料,需要的朋友可以參考下2022-04-04Android中Uri和Path之間的轉(zhuǎn)換的示例代碼
本篇文章主要介紹了Android中Uri和Path之間的轉(zhuǎn)換的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Android Studio實(shí)現(xiàn)幀動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android Studio實(shí)現(xiàn)幀動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11android使用RxJava實(shí)現(xiàn)預(yù)加載
這篇文章主要為大家詳細(xì)介紹了android使用RxJava實(shí)現(xiàn)預(yù)加載的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Android動(dòng)態(tài)更新Menu菜單的實(shí)現(xiàn)過(guò)程
菜單是用戶界面中最常見(jiàn)的元素之一,使用非常頻繁,下面這篇文章主要給大家介紹了關(guān)于Android動(dòng)態(tài)更新Menu菜單的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Android中ViewPager實(shí)現(xiàn)滑動(dòng)指示條及與Fragment的配合
這篇文章主要介紹了Android中ViewPager實(shí)現(xiàn)滑動(dòng)指示條及與Fragment的配合,使用Fragment實(shí)現(xiàn)ViewPager的滑動(dòng)是一種比較推薦的做法,需要的朋友可以參考下2016-03-03