Android ListView在增加HeaderView之后使用getLocationInWindow和getLocationOnScreen获得值不正确的解决方法

时间:2022-02-28 16:34:00

近日遇到一个很恶心的问题,把解决方法放到空间里来分享给大家:

问题发生的条件:

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的问题。 本着知其然而不知其所以然的屌丝精神写下此文。