Подгонка изображения в webview
Я планирую отображать изображения с SD-карты в веб-браузере, чтобы воспользоваться преимуществами встроенных возможностей масштабирования webview. Тем не менее, я столкнулся с проблемой с отображением изображений, размер которых больше размера экрана (например, 1800x1200) для первоначального размещения на экране, например, в ImageView. Сначала я хочу, чтобы изображение отображалось в полном объеме и обеспечивало управление зуммированием для пользователей.
Я попытался использовать WRAP_CONTENT для ширины и высоты webview, но это не работает.
Есть идеи?
Ниже приведен фрагмент кода, который я использую:
String path = getRealPathFromURI(mUriList.get(0)); // this gets the file path
webView = (WebView) findViewById(R.id.WebView01);
WebSettings settings= webView.getSettings();
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
webView.loadUrl("file://" + path);
Ответы
Ответ 1
private WebView mWebView2;
mWebView2 = (WebView)findViewById(R.id.webview);
mWebView2.getSettings().setJavaScriptEnabled(true);
mWebView2.getSettings().setLoadWithOverviewMode(true);
mWebView2.getSettings().setUseWideViewPort(true);
mWebView2.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView2.setScrollbarFadingEnabled(true);
mWebView2.loadDataWithBaseURL("file:///android_asset/", "<img src=\"banner5.png\" height=\"98%\" width=\"100%\"/>", "text/html", "utf-8", null);
Изображения находятся в папке с ресурсами
Ответ 2
Если вы правильно пишете свой HTML-код, вам не нужно делать никаких "setLoadWithOverviewMode", "setUseWideViewPort" или "setInitialScale". И нет никаких оснований для включения JavaScript.
Эта одна строка работала для меня:
webView.loadDataWithBaseURL("file://" + directory,
"<img src=\"" + name + "\" width=\"100%\"/>", "text/html", "utf-8", null);
Подчеркнутый HTML-код:
<img src=YourImage.png width="100%" />
, не устанавливая высоту, его соотношение сторон будет сохранено.
Ответ 3
Это помогло:
webView.setInitialScale(30);
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);
Ответ 4
WebSettings settings = webView.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true)