Экран выбора изображения в WebView

В моем приложении, я показываю изображения благодаря webView. Поэтому для каждого изображения я создаю небольшой HTML-код, который я загружаю с помощью webView. Поэтому мой html-код состоит в основном в теге img (с указанием пути к моему изображению).

Мои рисунки имеют разные размеры, поэтому я хотел бы настроить масштабирование веб-браузера в соответствии с шириной изображения до ширины webView. Таким образом, пользователю не нужно увеличивать или уменьшать изображение, чтобы видеть всю картину.

Есть ли способ достичь этого?

Благодарю.

Solutions Collecting From Web of "Экран выбора изображения в WebView"

Если вы создаете HTML-код (который вы говорите, что вы есть), вы можете обмануть:

В html-коде:

img src="xxx" width="100% > 

Это сделало трюк для меня:

 webView.setInitialScale(30); WebSettings webSettings = webView.getSettings(); webSettings.setUseWideViewPort(true); 

Для меня это было так: я читал, что для того, чтобы соответствовать ширине экрана, вы должны добавить это в свой HTML или xml внутри поля:

 width="100%" 

Так что я сделал, вместо масштабирования и масштабирования изображений, я получил xml, поместил его в StringBuilder, нашел src = "https://blablabla.com/image.png", который находится внутри поля и непосредственно перед этим Подстрока «src» я вставил «width =« 100% »», тогда y установил мой webView с помощью StringBuilder, код mi:

 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); } 

Надеюсь, что это поможет, мне потребовалось несколько часов, чтобы выяснить, как это решить.

Я нашел душу.

Используйте этот расчет.

Ширина устройства * (152 / плотность)

Извлекать ширину и плотность устройства с помощью displayMetrics.widthPixels и displayMetrics.densityDpi

Набор, рассчитанный как ширина в теге img

Значение 152 первоначально было 160, но когда используется 160, похоже, что изображение больше экрана.

Результат – изображение, первоначально подходящее для экрана, и масштабирование отлично работает.

Есть ли причина, по которой вы не просто используете какой-либо javascript для передачи изображений в приложение для Android, а также создаете пользовательский диалог с изображениями в этом диалоговом окне, чтобы он масштабировался в соответствии с Контентом.

Лично я считаю, что это решение более элегантно для вашего подхода.

Вы можете использовать небольшой jQuery на веб-странице, чтобы выполнить его.

Что-то вроде:

 $(document).ready(function(){ var windowWidth = $(window).width()+"px"; $("#imagID").width(windowWidth); }); 

Есть ли причина, по которой вы используете WebView для этого? С помощью ImageView вы можете установить scaleType, чтобы оно соответствовало размеру ImageView.