android中关于ListView的卡位说明
需求:做项目的时候,需要将ListView的header的一个Tab卡位,即listView滑动后,Header的某一个部分可以定在ListView的顶端卡住。
解决的方案:监听ListView的滑动,滑动的过程中得不断的获得header里面View的精准位置坐标,开始用的是View.getY()这个函数,但是后来发现这个方法是API11之前都不能用,
最后发现利用View.getLoactionInWindow()这个方法就解决问题了。
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
// TODO Auto-generated method stub
int[] locationTab = new int[2];
int[] locationView = new int[2];
// 获得listview的Header里面tab与顶端的动态距离
dongTab.getLocationInWindow(locationTab);
//主要是获得标题栏的高度
view.getLocationInWindow(locationView);
int headerHeight = locationView[1];
System.out.println("locationDong[1]***" + locationTab[1] + "**headerHeight**"
+ headerHeight + "**firstVisibleItem**" + firstVisibleItem);
if (headerHeight <= locationTab[1] && firstVisibleItem <= 1)
jingTab.setVisibility(View.GONE);
else
jingTab.setVisibility(View.VISIBLE);
}
});

浙公网安备 33010602011771号