WebView scrollTo no funciona

Estoy intentando usar el método scrollTo de webview. Este es mi archivo de diseño para la webview.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:id="@+id/webMap" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 

Lo que estoy tratando de hacer es mostrar un archivo html (que sólo tiene una imagen de mapa) y desplazarse a cierto área en la imagen con:

 mapWebView.loadUrl("file:///android_asset/maps/map.html"); mapWebView.scrollTo(300, 300); 

Pero cuando se carga la vista web siempre muestra el (0, 0) de la imagen.

¿Cuál es el problema con scrollTo() aquí?

Sospecho que mapWebView.loadUrl("file:///android_asset/maps/map.html"); Es asíncrono, así que mapWebView.scrollTo(300, 300); Se ejecuta antes de que la vista web haya finalizado la carga. Una vez que la página se cargue habrá perdido la configuración de desplazamiento que aplicó y se restablecerá a la parte superior.

Necesita escuchar la carga de la página y luego desplácese:

 mapWebView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); mapWebView.scrollTo(300, 300); } } ); 

Espero que esto ayude

EDIT: Resulta que esto no es fiable, utilice esto en su lugar:

 mapWebView.setPictureListener(new PictureListener() { @Override public void onNewPicture(WebView view, Picture picture) { mapWebView.scrollTo(300, 300); } }); 

Prueba esto..:

  try { webview.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress >= 100) { webview.scrollTo(x,y); } super.onProgressChanged(view, newProgress); }; }); } catch (Exception e) { e.printStackTrace(); } 

Después de reemplazar funciona mejor para mí.

  protected void onLayout(boolean changed, int l, int t, int r, int b) { // set initial scroll to scrollTo(yourXpos,yourYpos); super.onLayout(changed, l, t, r, b); } 
  • WebView de Android cargando parte de un sitio web
  • Cómo deshabilitar el desplazamiento vertical de la vista web para cargar la página entera como columna diferente
  • Vista web de Android, cargando archivo javascript en la carpeta de activos
  • Restaurar la posición de WebView al mismo contenido en el cambio de orientación (Android)
  • Extraño tema de GoBack de la webview en android
  • OnRecivedError no muestra la página de error personalizada
  • ¿Existe un límite de longitud de la clave (cadena) en el objeto JS?
  • La precarga de Webview de Android no funciona con Nexus
  • Cómo habilitar java script en webView
  • ¿Cómo manejar los idiomas RTL en las versiones anteriores a la versión 4.2 de Android?
  • Android WebView personalizado no logra encontrar funciones de javascript definidas en HTML cargado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.