Android ListView在增加HeaderView之后使用getLocationInWindow和getLocationOnScreen獲得值不正確的解決方法


近日遇到一個很惡心的問題,把解決方法放到空間里來分享給大家:

問題發生的條件:

1)ListView 控件中使用addHeaderView,為其添加了一個header view。(基本常識:headeriew必須在listview對象的setAdapter之前)

2)判斷listview滑動到最后一個元素的時候調用ListView的setSelection(0)。使其第一個item選中顯示。

發生的問題:

在調用setSelection(0)之后驚奇的發現使用getLocationInWindow和getLocationOnScreen來獲得headeriew的坐標值失敗了,一直返回0。 百撕不得騎姐,抓狂。。。。

解決問題方法:

嘗試各種手段,最終發現使用View的getGlobalVisibleRect的方式可以獲得headeriew的坐標值,即rect的top和left值。興奮中。。。。

 

PS.  SB的設計,SB的需求,引起了SB的問題。 本着知其然而不知其所以然的屌絲精神寫下此文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM