2014-12-01 15 views
8

Ich habe eine Aktivität mit einem Layout wie folgt aus:Warum funktioniert Pinch-to-Zoom in meinem Android WebView nicht?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="${relativePackage}.${activityClass}" > 

    <include layout="@layout/window_title" /> 

    <WebView 
     android:id="@+id/webView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:layout_below="@+id/linear_layout"/> 

</RelativeLayout> 

Hier ist, wie ich es bin konfigurieren:

// Enable JavaScript. 
    WebView myWebView = (WebView) findViewById(R.id.webView); 
    WebSettings webSettings = myWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    // Settings so page loads zoomed-out all the way. 
    webSettings.setLoadWithOverviewMode(true); 
    webSettings.setUseWideViewPort(true); 
    webSettings.setBuiltInZoomControls(true); 

Hier ist die Version Einstellung von meinem Manifest-Datei:

<uses-sdk 
    android:minSdkVersion="10" 
    android:targetSdkVersion="17" /> 

Ich versuche, diese Seite in das WebView zu laden:

https://new.livestream.com/lcboise 

Die Seite lädt gut, aber ich kann nicht zum Zoomen drücken. Ich habe verschiedene Kombinationen der WebView-Einstellungen (oben, einschließlich anderer nicht aufgeführt) ausprobiert, aber es wird einfach nicht zoomen. Beobachtungen

:

1) Laden eine andere Seite nach oben Ich verwende (https://lcboise.infellowship.com/UserLogin) in dem exakt gleichen WebView ermöglicht es mir, um es zu vergrößern.

2) Mein Haupttestgerät, wo es NICHT funktioniert, ist ein HTC One mit v4.4.3 von Android.

3) Ich kann die Livestream-Seite auf einem älteren Testgerät laden und zoomen, das mit v2.3.3 von Android läuft.

Ist es möglich, dass etwas in der Seite selbst das WebView bricht, das auf dem HTC One läuft? Wenn ja, könnten Sie es tun?

Update [Lösung]:

Hier ist, was ich meine WebView hinzufügen musste erhalten Pinch-to-Zoom arbeiten:

myWebView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      String javascript="javascript:document.getElementsByName('viewport')[0].setAttribute('content', 'initial-scale=1.0,maximum-scale=10.0');"; 
      view.loadUrl(javascript); 
     } 
    }); 
+1

plus eins für die Frage .. –

Antwort

10

Dies ist die Seite Sie folgenden Ansichtsfenster-Meta-Tag verknüpft hat:

<meta name="viewport" content="width=1024, maximum-scale=1.0, target-densitydpi=device-dpi"> 

Die Seite, die einen anderen Darstellungs Meta-Tag funktioniert hat. Das Bit maximum-scale weist die WebView an, das Einzoomen nicht mehr als den angegebenen Wert zuzulassen.

Die Website sollte auch in jedem modernen mobilen Browser unterbrochen werden. Das Einstellen der maximalen Skalierung auf einen niedrigen Wert ist nicht sehr "mobilfreundlich", also könnte es sich nur um einen Fehler auf der Seite handeln. Haben Sie versucht, den Besitzer zu kontaktieren, vielleicht können sie es serverseitig beheben?

Es gibt nicht viel, was Sie in WebView tun können, was nicht dazu führt, dass andere Websites falsch dargestellt werden. Sie könnten versuchen, JS zu injizieren, um die Seite um changing the meta tag als letzten Ausweg zu beheben.

+0

Danke für die Antwort! Am Ende musste ich etwas Javascript in die Seite einfügen, genau wie du gesagt hast. Sehen Sie sich mein Update an, um den genauen Code zu sehen, den ich eingegeben habe. –

+0

Ihre Antwort hat mir geholfen, plus 1 –

4

Hast Du diesen Vorschlag versucht?

webSettings.setSupportZoom(true); 

Siehe Disable pinch zoom in WebView?

Beachten Sie den Link zum Deaktivieren Zoom in Bezug ist. Vielleicht ist Ihr Zoom jedoch standardmäßig deaktiviert, wie einige Benutzer vorschlagen.

+0

Danke für die Antwort! Leider funktioniert das nicht. Wie ich oben sagte, bin ich ein wenig perplex, warum ich eine andere Seite in der genauen WebView in der genauen Aktivität laden kann und es gut zoomt. Auf den ersten Blick scheint dies die Webseite selbst als Quelle des Problems zu sehen. –

1

Für Zoom:

webSettings.getSettings().setBuiltInZoomControls(true); 

Für Disable:

webSettings.getSettings().setBuiltInZoomControls(false); 
3

diese beiden Zeilen hinzufügen Prise zu ermöglichen, in webview

webview.getSettings().setSupportZoom(true); 
webview.getSettings().setBuiltInZoomControls(true) 
0

wv.getSettings() vergrößern setBuiltInZoomControls (. wahr); wv.getSettings(). SetDisplayZoomControls (false);

funktionierte einwandfrei für mich.

Verwandte Themen