近日遇到一个很恶心的问题,把解决方法放到空间里来分享给大家:
问题发生的条件:
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的问题。 本着知其然而不知其所以然的屌丝精神写下此文。