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);
			}
		});

 

posted @ 2013-12-05 14:50  crazywenza  阅读(319)  评论(0编辑  收藏  举报