ScrollView ViewPager巢狀導致滑動衝突解決方案
阿新 • • 發佈:2019-02-07
開發是遇到類似淘寶產品介紹的介面
存在srollView也ViewPager滑動衝突的問題,使用者體驗不好。
於是對srollView做了自定義控制元件,解決了該問題,處理思想:如果滑動左右滑動大於上下滑動,在OnInterceptTouchEvent中直接return false,將處理交給viewPager.
public class MyScrollView extends ScrollView { // 滑動距離及座標 private float xDistance, yDistance, xLast, yLast; public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: xDistance = yDistance = 0f; xLast = ev.getX(); yLast = ev.getY(); break; case MotionEvent.ACTION_MOVE: final float curX = ev.getX(); final float curY = ev.getY(); xDistance += Math.abs(curX - xLast); yDistance += Math.abs(curY - yLast); xLast = curX; yLast = curY; if(xDistance > yDistance){ return false; } } return super.onInterceptTouchEvent(ev); } }
程式碼很簡單。ScollView原始碼解析