2016-04-19 13 views
1

Ich erhalte Accelerated Mobile Pages (APM) HTML formatiert einen Webcall. Ich versuche dann, diesen AMP in einem WebView anzuzeigen. So richte ich meine WebView wie folgt ein:Android: Laden von AMP formatiertem HTML in ein WebView

Es zeigt Inhalte ohne Fehler, aber es wird nicht korrekt angezeigt. Es ignoriert zum Beispiel Amp-Youtube-Elemente und eingebettete Tweets.

Gibt es noch etwas anderes mit dem WebView oder dem WebChromeClient, um AMP korrekt anzuzeigen?

EDIT:

Die Antwort unten funktioniert. Aber in meinem speziellen Fall benutzte ich das WebView innerhalb einer NestedScrollView. Was in Android 5.0+ gut funktioniert hat, aber darunter würden die Amp-Elemente nicht geladen werden.

Das Entfernen des WebView aus der NestedScrollView löste das Problem. Das übergeordnete Element ist jetzt ein relatives Layout.

Wenn Sie das gleiche Problem haben, versuchen Sie, das Layout zu vereinfachen, damit das WebView nicht tief verschachtelt wird. Und setzen Sie Ihr WebView definitiv nicht in eine NestedScrollView.

+0

Der abschließende Kommentar zum Nicht-Platzieren des Webview in einem NestedScrollView ist definitiv genau richtig. Das gesagt worden ist, ist es völlig nicht hilfreich, wenn Sie versuchen, CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout Setup w/Webview darunter zu verwenden. Irgendwelche Tipps dort? –

Antwort

0

Sie können Elemente wie eingebettete Youtube-Videos, Bilder, Tweets usw. nicht anzeigen, ohne dem WebView eine Basis-URL zu geben. Die Lösung bestand darin, webview.loadDataWithBaseUrl anstelle von webView.loadData zu verwenden. Sie müssen eine gültige URL übergeben.

webView = (WebView) findViewById(R.id.web_view); 
    webView.setWebChromeClient(new WebChromeClient()); 
    webView.getSettings().setJavaScriptEnabled(true); 
    String content = article.getContentAmp(); 
    String baseUrl = extractUrlFromContent(content); 
    webView.loadDataWithBaseURL(baseUrl, content, "text/html", "utf-8", ""); 
Verwandte Themen