如圖,紅色部分爲WebView,做爲ListView頭部存在,測試視頻(h5)要左右滑動,ListView要上下滑動,保證視頻控件和下面評論部分能夠顯示,可是這個時候就存在WebView橫向滑動和ListView豎向滑動之間的衝突。ide
解決以下:測試
mWebView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //在觸發時回去到起始座標 float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //將按下時的座標存儲 downX = x; downY = y; break; case MotionEvent.ACTION_MOVE: //獲取到距離差 float dx = x - downX; float dy = y - downY; //防止是按下也判斷 if (Math.abs(dx) > 8 && Math.abs(dy) > 8) { //經過距離差判斷方向 int orientation = getOrientation(dx, dy); switch (orientation) { case 'r': action = "右"; listView.requestDisallowInterceptTouchEvent(true); break; case 'l': action = "左"; listView.requestDisallowInterceptTouchEvent(true); break; case 't': action = "上"; break; case 'b': action = "下"; break; } } break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: listView.requestDisallowInterceptTouchEvent(false); break; } return false; } });
/** * 根據距離差判斷 滑動方向 * * @param dx X軸的距離差 * @param dy Y軸的距離差 * @return 滑動的方向 */ private int getOrientation(float dx, float dy) { if (Math.abs(dx) > Math.abs(dy)) { //X軸移動 return dx > 0 ? 'r' : 'l'; } else { //Y軸移動 return dy > 0 ? 'b' : 't'; } }
完美解決,橫向 H5滑動不受到影響,豎向滑動也不會受到影響。spa