Вопрос

Я бросаю HTML к веб-просмотре, чтобы рендер. В HTML мне нужно загрузить изображение, которое у меня есть в /res/drawable.

У меня есть /res/drawable/my_image.png и код, такой как это:

final WebView browser = (WebView) findViewById(R.id.my_webview);
String html = new MyHelper(myObject).getHtml();
browser.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");

Где строка html имеет что-то вроде:

<html><head>
<h1>Here is the image</h1>
<img src="my_image.png" />
</head><html>

Вопрос в том, что должно, что это должно src атрибут должен ссылаться на изображение в /res/drawable?

Это было полезно?

Решение

Это работало в Android 2.2

<img src = "file:///android_res/drawable/q1.png" />

где Q1.PNG находится в папке RES / DRUCEABLABLE-HDPI

Другие советы

Я признаю, что не знаю много о WebViews / HTML, но похоже, что вы берете более сложный маршрут для этого. Есть простой способ загрузить HTML-файл; Поместите его в папку активов, а затем можно упомянуть следующим образом.

WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);

Очевидно, что ваш макет сложнее, поскольку у вас есть больше, чем просто веб-просмотр, поэтому вы не можете использовать setContentView() напрямую, но это основная идея. Затем ссылаться на изображение в этом HTML-файле, я использовал <img> Теги так:

<img src="res/drawable/icon.png"/>

Это работает для вас?

user302750,

Ваш метод неверный. res/drawable/banner300.jpg должно быть file:///android_res/drawable/banner300.jpg.

banner300.jpg Может быть в одном из следующих мест в вашем проекте, и Android автоматически загрузит правильный для устройства, который вы используете.

  • res/drawable/banner300.jpg
  • res/drawable-ldpi/banner300.jpg
  • res/drawable-mdpi/banner300.jpg
  • res/drawable-hdpi/banner300.jpg
  • res/drawable-xhdpi/banner300.jpg

То assets Папка предназначена для общих ресурсов, которые вам не нужны разные версии. Пример может быть шаблоном XSL или что-то в этом природе.

Mikenereson, ваш ответ на вашу проблему также неверно, привлеченные ресурсы должны содержаться в res каталог.

Вот пример из моего собственного проекта. Я вывод HTML, точно так же:

<img src="file:///android_res/drawable/stats_btn.png"/>

При использовании АН ldpi устройство, я получаю ldpi изображение, если использовать hdpi или mdpi, Я также получаю подходящую для них. Android решает file:///android_res/drawable/stats_btn.png к одному из следующих ресурсов, которые у меня есть в моем проекте.

  • ./res/drawable-ldpi/stats_btn.png
  • ./res/drawable-hdpi/stats_btn.png
  • ./res/drawable-mdpi/stats_btn.png

Из моих тестов пути «Файл: ///android_res/drawable/q1.png» работает только с 2.2+. Для 2.1, который дает файл не найден ошибку. Перемещение ресурса к активам будет работать, но это не осуществимо, если вы хотите использовать привлеченные черты (то, что вам нужна копия изображения в каждой папке ...).

Ответы с участием файла: // URL-адреса не могут работать больше как в Android 4.0. См. Ответ этот вопрос. Отказ Способ работы, заключается в ответе здесь.

У меня такая же проблема, но не поместите файл изображения в res/drawable (который мне сначала пришлось создавать, я уже имел HDPI, -LDPI и -MDPI и используя file:///asset/ URL работал для меня.

Вот что я делаю:

Мероприятия:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        String summary = "<html><body><div style=\"background:red; width:300px; height:50px;\"></div><img src=\"res/drawable/banner300.jpg\"/></body></html>";
        mWebView.loadData(summary, "text/html", "utf-8");

Затем в res/drawable Я поместил Banner300.jpg - но он не появляется. Любые идеи?

Вы загружаете розыгрыши, как вы где угодно в вашем коде ...http://developer.android.com/guide/topics/resources/drawable-resource.html.

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);

Также @mikenereson с помощью Android вы можете напрямую доступ к RAW файлы, которые находятся в каталоге активов и SDCard.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top