horizontalScrollView.setOnTouchListener(new View.OnTouchListener() { float rawX; int mTouchSlop = ViewConfiguration.get(getActivity()).getScaledTouchSlop(); @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: v.getParent().requestDisallowInterceptTouchEvent(true); rawX = event.getRawX(); break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: v.getParent().requestDisallowInterceptTouchEvent(false); rawX = 0f; break; case MotionEvent.ACTION_MOVE: if (Math.abs(rawX - event.getRawX()) > mTouchSlop) v.getParent().requestDisallowInterceptTouchEvent(true); break; } return false; }
以上的是在viewpager中使用horizontalScrollView 导致焦点发生冲突的解决方案,同时也是我们项目中仿照淘宝客户端时实现竖直方向的ViewPager中使用ScrollView时导致焦点发生冲突的解决方案。