近日遇到一個很惡心的問題,把解決方法放到空間里來分享給大家:
問題發生的條件:
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的問題。 本着知其然而不知其所以然的屌絲精神寫下此文。