Учитывая следующий HTML:
<p>This is text and this is an image <img src="http://www.example.com/image.jpg" />.</p>
Действительно ли возможно сделать рендеринг изображения? При использовании этого отрывка: mContentText.setText(Html.fromHtml(text));
, Я получаю голубое поле с черными границами, ведя меня, чтобы полагать, что TextView имеет некоторую идею того, каков тег img.
Если вы посмотрите документацию для Html.fromHtml (text)
, вы увидите, что там написано:
Any
]
теги в HTML будут отображаться как общее замещающее изображение, которое затем ваша программа может пройти и заменить реальными изображениями.
Если вы не хотите выполнять эту замену самостоятельно, вы можете использовать другой Html.fromHtml ()
метод , который принимает Html.TagHandler
и Html.ImageGetter
в качестве аргументов, а также текст для синтаксического анализа.
В вашем случае вы можете проанализировать null
как Html.TagHandler
, но вам нужно будет реализовать свой собственный Html.ImageGetter
, поскольку его нет » t реализация по умолчанию.
Однако проблема, с которой вы столкнетесь, заключается в том, что Html.ImageGetter
должен работать синхронно, и если вы загружаете изображения из Интернета, вы, вероятно, захотите сделать это асинхронно. Если вы можете добавить любые изображения, которые хотите отображать в качестве ресурсов в своем приложении, ваша реализация ImageGetter
станет намного проще. Вам может сойти с рук что-то вроде:
private class ImageGetter implements Html.ImageGetter {
public Drawable getDrawable(String source) {
int id;
if (source.equals("stack.jpg")) {
id = R.drawable.stack;
}
else if (source.equals("overflow.jpg")) {
id = R.drawable.overflow;
}
else {
return null;
}
Drawable d = getResources().getDrawable(id);
d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
return d;
}
};
Вы, вероятно, захотите придумать что-нибудь более умное для сопоставления исходных строк с идентификаторами ресурсов.
Вы также можете написать свой собственный парсер для получения URL всех изображений, а затем динамически создавать новые imageviews и передавать им url.
Кроме того, если вы все-таки хотите произвести замену самостоятельно, вам следует искать персонажа [].
Но если вы используете Eclipse, он испугается, когда вы введете эту букву в оператор [replace], сообщив вам, что он конфликтует с Cp1252 - это ошибка Eclipse. Чтобы исправить это, перейдите в
Окно -> Настройки -> Общие -> Рабочая область -> Кодировка текстового файла,
и выберите [UTF-8]