Android - локальное изображение в webview
Я пытаюсь diplay локальное изображение в моем веб-просмотре:
String data = "<body>" + "<img src=\"file:///android_asset/large_image.png\"/></body>";
webview.loadData(data, "text/html", "UTF-8");
Этот код ничего не отображает, а не:
webview.loadUrl("file:///android_asset/large_image.jpg");
Это работает, но мне нужна сложная веб-страница, а не только изображение.
Любые идеи?
Ответы
Ответ 1
Загрузите файл Html в Webview и поместите свое изображение в папку с ресурсами и прочитайте этот файл изображения с помощью Html.
<html>
<table>
<tr>
<td>
<img src="abc.gif" width="50px" alt="Hello">
</td>
</tr>
</table>
</html>
Теперь загрузите этот Html файл в Webview
webview.loadUrl("file:///android_asset/abc.html");
Ответ 2
Вы также можете попробовать
String data = "<body>" + "<img src=\"large_image.png\"/></body>";
webView.loadDataWithBaseURL("file:///android_asset/",data , "text/html", "utf-8",null);
Ответ 3
Один удобный способ (часто забываемый) - использовать встроенные образы base64 в HTML-контенте. Это также будет работать в мобильных браузерах Webkit (IOS, Android..).
Точка использования этого метода заключается в том, что вы можете вставлять изображения в контент HTML, а не сражаться с ссылками на изображения из веб-просмотра в ограниченную файловую систему.
<img src="data:image/jpg;base64,xxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>
xxxxx = base64 encoded string of images bytes
Если вы хотите предоставить (базовые 64) данные изображения из файловой системы, вы можете, например:
1) В Android используется ContentProvider - который будет предоставлять строки с форматированием в формате base64.
<img src="content://.............."/>
2) Или вы можете предварительно обработать HTML с помощью JSOUP или аналогичного парсера DOM (перед установкой его в веб-просмотр) и настроить изображение src с соответствующим образом закодированным кодом base64.
Недостатками этого метода являются накладные расходы, включенные в преобразование образа в base64 string и, конечно же, при обработке больших данных HTML в webview.
Ответ 4
Используйте этот метод.
mview.loadDataWithBaseURL(folder.getAbsolutePath(), content, "text/html", "windows-1252", "");
folder.getAbsolutePath()
может быть "file:///android_asset"
или просто "/"
Ответ 5
Я думаю, что в коде отсутствует \
String data = "<body>" + "<img src=\\"file:///android_asset/large_image.png\"/></body>";
Ответ 6
![enter image description here]()
webView.loadDataWithBaseURL("file:///android_asset/", sourse, "text/html", "UTF-8", null);
Ответ 7
наилучшим подходом для меня было создание моего файла .html
со всеми текстами и изображениями в MS-слове и сохранение файла в виде файла .html
и копирование как файла .html
, так и соответствующей папки вложений в активы папку и указав адрес файла .html в папке с ресурсами на webview.loadUrl()
...
Вот что вам нужно сделать...
WebView webview = (WebView) findViewById(R.id.webView1);
webview.loadUrl("file:///android_asset/learning1/learning1.htm");
Ответ 8
решение Zain работало для меня. Я забыл добавить мою папку www с файлами HTML и другими подпапками css и изображений и т.д.
webView.loadDataWithBaseURL("file:///android_asset/www/",data , "text/html", "utf-8",null);
..
Ответ 9
Самый простой и простой способ - создать html файл с редактором html, например kompozer
или любым другим, что вам нравится.
Поместите свой html файл в папку с ресурсами и вызовите webView.loadUrl(filename)
. Папка активов также должна содержать все изображения, которые вы указываете в ваших html файлах.
Исправить заранее в html файле путь к вашим изображениям таким образом, чтобы вы только записывали чистое имя файла. Имя файла, которое вы передаете loadUrl, должно иметь префикс file:///android_asset/
.
Если изображение или файл не загружается, проверьте имена файлов пробелы, дефис и другие странные вещи и измените имена файлов.