2010-06-11 7 views
8

Tengo un WebView que estoy tratando de tener una escala de un cierto porcentaje al cargar la página. La versión para iPhone de este software utiliza el meta-etiqueta HTML:Android WebView no respeta el porcentaje de escala

<meta name="viewport" content="width=320, initial-scale=0.95, maximum-scale=2.0, user-scalable=1"> 

Dado que no parece WebView de Android para respetar esa etiqueta que no modificable mediante el porcentaje setInitialScale(). Sin embargo, WebView está simplemente ignorando esta llamada a método. No importa qué número ponga allí, se muestra al 100%.

Ideas?

Actualización: No funciona en el emulador, en mi Droid (Motorola) o en mi G1 (HTC).

+0

hola ¿qué dispositivo android estás usando? – Jorgesys

+0

Emulator, G1, Droid ... no funciona en ninguno de ellos. –

Respuesta

1

¿Ha habilitado el soporte de zoom para su vista web?

WebSettings webSettings = mywebView.getSettings(); 
    webSettings.setSupportZoom(true);  
+0

No lo hice, pero lo probé y no importó. –

5

Algunos dispositivos de HTC tienen problemas con WebView, tratar este fragmento!

import java.lang.reflect.Method; 
import java.lang.reflect.InvocationTargetException; 

myWebView = new WebView(this); 
myWebView.getSettings().setLoadsImagesAutomatically(true); 
myWebView.getSettings().setJavaScriptEnabled(true); 
myWebView.getSettings().setBuiltInZoomControls(true); 
myWebView.setInitialScale(100);  
try { 
    Method m = myWebView.getClass().getMethod("setIsCacheDrawBitmap", boolean.class); 
    if (m != null) { 
     m.invoke(myWebView, false); 
     myWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); 
    } 
} catch (NoSuchMethodException e) { 
} catch (IllegalAccessException e) { 
} catch (InvocationTargetException e) { 
} 

myWebView.loadUrl("http://www.stackoverflow.com"); 
+1

Lo encontré este es el enlace original http://community.htc.com/na/htc-forums/android/f/91/p/2332/8538.aspx =) – Jorgesys

+1

No hizo ninguna diferencia ... gracias. –

0

Puede ver varias opciones.

1. Probablemente hay algo mal con tu código. Aquí está el código más simple y puedo decir que funciona para mí. El contenido está escalado.

WebView webview1 = (WebView) findViewById(R.id.webview1); 
webview1.setInitialScale(30); 
webview1.loadUrl("http://stackoverflow.com"); 

Por favor, publique su código. Todo el código relacionado con la configuración de WebView. Pruebo en el emulador 2.2

2. Probablemente hay algo mal con la URL que prueba. Puede probar "http://stackoverflow.com" mientras lo pruebo y se escala bien.

3. Tal vez usemos diferentes SDK. ¿Con qué SDK creas? Quiero decir, ¿cuál es tu objetivo en default.properties? ¿Cuál es tu uses-sdk en AndroidManifest.xml?

Aquí hay una prueba simple que funciona bien para mí http://open-pim.com/tmp/WebViewTest.zip. Puedes intentarlo también.

+2

Esto funcionó! Pero no en mis aplicaciones. Resulta las etiquetas de la metaportal: escala inicial = 1.0; escala máxima = 1.0; impedían que setInitialScale() funcionara.Después de eliminarlos, funciona. –

+0

Este ejemplo no funciona con WebView en Android 2.3.6. El sitio web de Stackoverflow no tiene escala. –

0

La etiqueta meta funciona para mí, si separa los parámetros con punto y coma (;) en lugar de comas (,). Lo he usado en el pasado:

<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> 

Y funciona, al menos en el navegador. No estoy seguro acerca de un WebView, pero podría valer la pena intentarlo.

+0

el ';' no hizo nada por mí. – Jake

+0

Contenido no válido, solo se permiten comas: https://css-tricks.com/snippets/html/responsive-meta-tag/ –

1

El siguiente código me ayudó cuando el mío no respondía. Vale la pena intentarlo:

mywebview.setWebViewClient(new WebViewClient()); 
mywebview.getSettings().setSupportZoom(true) ; 
mywebview.getSettings().setUseWideViewPort(true) ; 
mywebview.setInitialScale(1) ; 
mywebview.loadUrl(sURL); 
+0

Esto no funciona en mi teléfono Android 2.3.6. Establecer 'escala inicial' para la ventana aún no tiene efecto. –