2010-06-11 15 views
8

Ich habe eine WebView, die ich versuchen, auf ein bestimmtes Prozent beim Laden der Seite zu skalieren haben. Die iPhone-Version dieser Software verwendet den HTML-Meta-Tag:Android WebView nicht respektieren Skalierungsprozentsatz

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

Da Android WebView scheint nicht den Tag zu respektieren ich die Prozent-hart codiert setInitialScale() verwenden. Das WebView ignoriert jedoch gerade diesen Methodenaufruf. Egal, welche Nummer ich da reingebe zeigt es zu 100%.

Ideen?

Update: Es funktioniert nicht im Emulator, auf meinem Droid (Motorola) oder auf meinem G1 (HTC).

+0

hallo was Android-Gerät verwenden Sie? – Jorgesys

+0

Emulator, G1, Droid ... an keinem von ihnen funktioniert. –

Antwort

1

Haben Sie die Zoom-Unterstützung für Ihr Webview aktiviert?

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

hatte ich nicht, aber ich habe es einfach ausprobiert und es machte keinen Unterschied. –

5

Einige HTC-Geräte haben Probleme mit WebView, versuchen Sie diesen Schnipsel!

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

Ich fand es das ist der ursprüngliche Link http://community.htc.com/na/htc-forums/android/f/91/p/2332/8538.aspx =) – Jorgesys

+1

machte keinen Unterschied ... danke, obwohl. –

0

Kann mehrere Optionen sehen.

1. Wahrscheinlich stimmt etwas mit deinem Code nicht. Hier ist der einfachste Code und ich kann sagen, dass er für mich funktioniert. Der Inhalt ist skaliert.

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

Also bitte posten Sie Ihren Code. Der gesamte Code bezieht sich auf die WebView-Konfiguration. Ich teste auf Emulator 2.2

2. Wahrscheinlich stimmt etwas nicht mit der URL, die Sie testen. Sie können "http://stackoverflow.com" testen, während ich es teste und es ist gut skaliert.

3. Vielleicht verwenden wir verschiedene SDKs. Mit welchem ​​SDK bauen Sie auf? Ich meine, was ist Ihr Ziel in default.properties? Was nutzt du in AndroidManifest.xml?

Hier ist ein einfacher Test, der für mich funktioniert http://open-pim.com/tmp/WebViewTest.zip. Sie können es auch versuchen.

+2

Das hat funktioniert! Aber nicht in meinen Apps. Stellt die Meta-Viewport-Tags aus: initial-scale = 1.0; maximale Skala = 1,0; verhinderte, dass setInitialScale() funktionierte.Nach dem Entfernen funktioniert es. –

+0

Dieses Beispiel funktioniert nicht mit WebView unter Android 2.3.6. Die Stackoverflow-Website ist nicht skaliert. –

0

Der Tag meta funktioniert für mich, wenn ich die Parameter mit Semikolons (;) anstelle von Kommas (,) trennen. Ich habe das in der Vergangenheit verwendet:

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

Und es funktioniert, zumindest im Browser. Ich bin mir nicht sicher über eine WebView, aber es könnte einen Versuch wert sein.

+0

das ';' hat nichts für mich getan. – Jake

+0

Das sind ungültige Inhalte, nur Kommas sind erlaubt: https://css-tricks.com/snippets/html/responsive-meta-tag/ –

1

Der Code unten half mir, als meine nicht reagierte. Einen Versuch wert:

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

Dies funktioniert nicht auf meinem Android 2.3.6 Telefon. Die Einstellung "initial-scale" für das Ansichtsfenster hat immer noch keine Auswirkungen. –

Verwandte Themen