能夠解決listview嵌套viewpager之後 滑動不流暢的問題
這是引用别人的代碼,用在我的項目中剛好能解決問題,隻需要對一些值進行改變就可以了
public class MyViewPager extends ViewPager {
private float xDown;// 記錄手指按下時的橫坐标。
private float xMove;// 記錄手指移動時的橫坐标。
private float yDown;// 記錄手指按下時的縱坐标。
private float yMove;// 記錄手指移動時的縱坐标。
private boolean viewpagersroll = false;// 目前是否是viewpager滑動
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// 記錄按下時的位置
xDown = ev.getRawX();
yDown = ev.getRawY();
} else if (ev.getAction() == MotionEvent.ACTION_MOVE) {
xMove = ev.getRawX();
yMove = ev.getRawY();
if (viewpagersroll) {
// viewpager自己處理滑動效果
getParent().requestDisallowInterceptTouchEvent(true);
return super.dispatchTouchEvent(ev);
}
// 這裡的動作判斷是Viewpager滑動,ListView不滑動
if (Math.abs(yMove - yDown) < 20 && Math.abs(xMove - xDown) > 5) {
viewpagersroll = true;
} else {
// 由父容器listview來處理滑動效果
return false;
}
} else if (ev.getAction() == MotionEvent.ACTION_UP) {
viewpagersroll = false;
}
return super.dispatchTouchEvent(ev);
}
}
當橫向滑動的時候 viewpager攔截了事件 當上下滑動的時候 listview重新獲得事件