你可以寫你自己的WebView實現implemting OnGestureListener:
public class MyWebView extends WebView implements OnGestureListener
內聲明GestureDetector:
private GestureDetector gestureDetector;
實現一個initWebView()方法,並調用它在這樣的構造:
// Best you do this for every WebViewConstructor:
public AppWebView(Context context) {
super(context);
initWebView(); }
private void initWebView(){
gestureDetector = new GestureDetector(getContext(), this);
// Do any other customizations for your webview if you like.
}
現在實現OnGestureListene中的方法r和上雙擊事件返回true:
public boolean onSingleTapConfirmed(MotionEvent e) {
return false; //Nothing
}
public boolean onDoubleTap(MotionEvent e) {
return true; //Nothing
}
public boolean onDoubleTapEvent(MotionEvent e) {
return true; //Nothing
}
public boolean onDown(MotionEvent e) {
return false; //Nothing
}
public void onShowPress(MotionEvent e) {
//Nothing
}
public boolean onSingleTapUp(MotionEvent e) {
return false; //Nothing
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false; //Nothing
}
public void onLongPress(MotionEvent e) {
//Nothing
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false; //Nothing
}
最後重寫網頁視圖中的onTouchEvent,讓它穿過事件姿態探測器是這樣的:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) return true;
return super.onTouchEvent(event);
}
這個工作通常不錯,但有此解決方案存在1個基本缺陷:某些未被識別爲DoubleTap事件的事件可能會導致您的webview縮放。
I'm仍在爲一個解決方案,並會張貼我的進步在這裏: WebView getting rid of double tap zoom.
Thx,看起來很有希望。我將接受它作爲答案而不進行測試。我做了一個黑客,我完全禁用了縮放功能,將WebView傳遞給了HTML,並且適合JavaScript內的內容。不是很好,但它工作。 – SimonSays