mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO 自动生成的方法存根 /* * 第一是静止状态,SCROLL_STATE_IDLE * 第二是手指滚动状态,SCROLL_STATE_TOUCH_SCROLL * 第三是手指不动了,但是屏幕还在滚动状态。SCROLL_STATE_FLING */ if (scrollState == SCROLL_STATE_IDLE) { int[] lvDateLocation=new int[2]; mListView.getLocationInWindow(lvDateLocation); View view0 = view.getChildAt(0);//在listview中,第一个显示的item View view1 = view.getChildAt(1);// int[] view0Location = new int[2]; int[] view1Location = new int[2]; view0.getLocationInWindow(view0Location); view1.getLocationInWindow(view1Location); int move0 = view0Location[1] - lvDateLocation[1]; int move1 = view1Location[1] - lvDateLocation[1]; //判断前后两个view谁近目标 if (Math.abs(move0) < Math.abs(move1)) { mListView.smoothScrollBy(move0, 0); //setSelectDate(position); } else { mListView.smoothScrollBy(move1, 0); //setSelectDate(position+1); } } } @Override public void onScroll(AbsListView absListView, int i, int i1, int i2) { } });
ListView 滚动停靠
最新推荐文章于 2022-08-01 11:39:03 发布