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:
- El reproductor de video de youtube superpone el otro diseño cuando nos desplazamos
- Responder sitio web mostrar en la vista Web fuera de ancho móvil (no sensible) de otra manera en Chrome se ve bien
- Android: la vista web se corta
- WebView no se procesa hasta tocar Android 4.2.2
- PictureListener y onNewPicture () están obsoletos - Alternativas?
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í?
- Utilizar folleto en una aplicación de Android para mostrar el mapa en línea
- La función de visualización de android enPagefinished se llama dos veces
- Android: Cómo comprobar la carga exitosa de url al usar webview.loadUrl
- Vista Web de Android: cómo desplazar el diseño de toda la actividad
- Problema de redibujo de WebView al cargar datos
- Android - ¿Cómo mostrar imágenes de los recursos dibujable?
- Rellenar campos en la vista web de forma automática
- ¿Cómo puedo capturar toda la vista en un mapa de bits cuando se utiliza el paso de peatones para mostrar la página web?
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); }
- ZXing Android Generar código de barras 1D
- Fuga de memoria en Android al intentar enviar un formulario con imagen al servidor PHP