2011-05-31 9 views

Respuesta

14

Así pues, en que la actividad se debe establecer su onTouchListener reemplazado:

  mWebView.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       v.setOnTouchListener(mWebView.mOnTouchListener); 
       return false; 
      } 
     }); 

Y que tendría que hacer una nueva clase, que se extiende WebView. Y dentro de él definirías un OnTouchListener.

public final OnTouchListener mOnTouchListener = new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent rawEvent) { 
     return false; 
    } 
}; 

Al configurar ontouchlistener como nulo no se restablece a la definición predeterminada. Aún debe proporcionar un oyente real.

+0

idea genial, pero ¿puedes explicar cómo interactúa la nueva clase con 'mWebView'? ¿Cómo llega mWebView a mOnTouchListener? ¡Gracias! – CQM

+0

mWebView no es un control estándar de Android Webview. En cambio, es un control personalizado que ha creado, que es simplemente una nueva clase que hereda de WebView. – Pete

+0

Por cierto, si está extendiendo una 'Vista' como' Vista Web ', no necesita implementar un escucha táctil. La vista tiene un método incorporado que implementa en su lugar: 'boolean onTouchEvent (evento MotionEvent) {...}'. La ventaja de crear un oyente táctil es que puede hacerlo en ** alguna otra clase **, como un Fragmento o Actividad, que ya está definiendo. Entonces no tienes que crear otra clase nueva. – ToolmakerSteve

23
webView.setOnTouchListener(null); 
+0

¿Elimina esto la función de escucha en toque para que la funcionalidad vuelva a ser normal, o simplemente establece que el oyente sea nulo, lo que significa que la vista web no hará nada cuando se toque? – NotACleverMan

+0

gracias por la ayuda, pero acabo de probarlo y sigo teniendo los mismos problemas de funcionalidad. (Por ejemplo, doble toque para hacer zoom no funciona) – NotACleverMan

+0

¿qué tal hacer custom onTouchListener y devolver false? – Hein

4

Estaba buscando ayuda en línea y llegué a esta publicación. Cuando hice

myView.setOnTouchListener(null); 

mi myView dejado de responder al tacto.

Cuestiones relacionadas