Was ich habe: Ich lade ein Bild von einer URL. Ich mache einfach (WebView).loadUrl(imageurl, extraheaders)
Was ich bekomme: Das Bild wird nicht in voller Breite des WebView angezeigt. Es hat umlaufende Leerzeichen (wenn Sie in Ihrem Desktop-Browser ein kleines Fenster öffnen)
Was ich versucht habe: Setzen des Layoutalgorithmus auf SINGLE_COLUMN. Funktioniert perfekt, aber Zoomen funktioniert nicht. (Ich habe es in WebView.getSettings()
aktiviert. Weiß nicht warum. Einstellung setUseWideViewPort(true);
laden Bild ohne Leerzeichen, aber es ist vollständig vergrößert.
Ich hatte das gleiche Problem und das hat gut funktioniert:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
String data = "<html><head><title>Example</title><meta name=\"viewport\"\"content=\"width="+width+", initial-scale=0.65 \" /></head>";
data = data + "<body><center><img width=\""+width+"\" src=\""+url+"\" /></center></body></html>";
webView.loadData(data, "text/html", null);
Edit: Da dies die akzeptierte Antwort blieb, ist hier eine bessere Lösung (alles Gute an Tony unten)
WebView content = (WebView) findViewById(R.id.webView1);
content.loadDataWithBaseURL(null, "<style>img{display: inline;height: auto;max-width: 100%;}</style>" + post.getContent(), "text/html", "UTF-8", null);
Sie könnten auch so etwas tun.
Fügen Sie am Anfang (abhängig von Ihrem Webdatenformat) Ihrer Datenzeichenfolge einen CSS-Stil für img
hinzu.
<style>img{display: inline; height: auto; max-width: 100%;}</style>
Um es schnell mit den Daten in WebView zu tun, habe ich dies getan.
WebView content = (WebView) findViewById(R.id.webView1);
content.loadDataWithBaseURL(null, "<style>img{display: inline;height: auto;max-width: 100%;}</style>" + post.getContent(), "text/html", "UTF-8", null);
Es ist ziemlich genau das, was bansal21ankit gesagt hat, aber es funktioniert stattdessen für jedes Bild in Ihrem HTML-Code ohne zusätzlichen Aufwand.
Bearbeiten (Klarstellung zum Beitragsinhalt):
Sie können einen beliebigen text/html
-Wert anstelle von post.getContent()
aus dem Beispiel verwenden.
Postinhalt ist hier nur ein Beispiel für einen text/html
-Inhalt, der aus einer Datenquelle geladen und dann mit dem style
-Teil verkettet wird, wodurch jedes Bild in einem bestimmten Inhalt auf den Bildschirm passt.
sie sollten das WebView an den Bildschirm anpassen:
WebView data = (WebView) getViewById(R.id.webview1);
data.getSettings().setLoadWithOverviewMode(true);
data.getSettings().setUseWideViewPort(true);
Es ist ein bisschen spät, aber ich hoffe, dass dies helfen wird. Was Sie tun können, ist:
String html = "<html><body><img src=\"" + URL + "\" width=\"100%\" height=\"100%\"\"/></body></html>";
mWebView.loadData(html, "text/html", null);
dadurch wird das Bild der Breite Ihres WebView genau angepasst. Ansonsten können Sie das WebView selbst anpassen.
Was für mich funktionierte, war folgendes: Ich habe gelesen, dass Sie, um die Breite des Bildschirms anzupassen, dies Ihrem HTML- oder XML-Code im Feld hinzufügen sollten:
width="100%"
Was ich also tat, war, anstatt die Bilder zu skalieren und zu zoomen, bekam ich die XML, legte sie in einen StringBuilder und fand das src = "https://blablabla.com/image.png", das sich im Feld befindet und kurz davor der "src" -Substring Ich habe die "width =" 100% "" eingefügt, dann setze ich mein WebView mit dem StringBuilder, mi-Code lautet wie folgt:
public void setWebViewWithImageFit(String content){
// content is the content of the HTML or XML.
String stringToAdd = "width=\"100%\" ";
// Create a StringBuilder to insert string in the middle of content.
StringBuilder sb = new StringBuilder(content);
int i = 0;
int cont = 0;
// Check for the "src" substring, if it exists, take the index where
// it appears and insert the stringToAdd there, then increment a counter
// because the string gets altered and you should sum the length of the inserted substring
while(i != -1){
i = content.indexOf("src", i + 1);
if(i != -1) sb.insert(i + (cont * stringToAdd.length()), stringToAdd );
++cont;
}
// Set the webView with the StringBuilder: sb.toString()
WebView detailWebView = (WebView) findViewById(R.id.web_view);
detailWebView.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8", null);
}
Ich hoffe, das hilft, es dauerte einige Stunden, um herauszufinden, wie ich das lösen kann.
Code:
web = (WebView) findViewById(R.id.at_image_web);
web.getSettings().setBuiltInZoomControls(true);
web.getSettings().setUseWideViewPort(true);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setLoadWithOverviewMode(true);
web.loadUrl(linkImage);
Diese Arbeit für mich:
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
Dieser Code funktioniert für mich:
String strData = "<head>" + "<style>" + ".smal-video-pnl,.smal-video-thumb,.detail-hldr{margin-left: 0px;margin-right:0px;}" + "</style>" +
"</head>" + mListItem.get(position).getTitbits();
holder.webViewStatus.loadDataWithBaseURL(null, strData, "text/html", "UTF-8", null);
Ich denke, das wird dein Problem beheben: -
WebView web;
web = (WebView) findViewById(R.id.webkit);
web.setWebViewClient(new Callback());
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setLoadWithOverviewMode(true);
web.getSettings().setUseWideViewPort(true);
web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
web.setScrollbarFadingEnabled(false);