Может ли кто-нибудь помочь мне в использовании Html.ImageGetter для отправки изображений с использованием тега html image src? и пример или хороший учебник
Html.ImageGetter
Ответ 1
Чтобы получить изображения из ресурсов приложения сначала в текстовом файле, вставьте тег изображения html, например:
<img src="my_image">
Обратите внимание, что "my_image" - это просто имя, которое нельзя вывести, а не путь. Затем используйте этот код для разметки текста с помощью изображений в TextView
myTextView.setText(Html.fromHtml(myText, new ImageGetter() {
@Override public Drawable getDrawable(String source) {
Drawable drawFromPath;
int path =
myActivity.this.getResources().getIdentifier(source, "drawable",
"com.package...");
drawFromPath = myActivity.this.getResources().getDrawable(path);
drawFromPath.setBounds(0, 0, drawFromPath.getIntrinsicWidth(),
drawFromPath.getIntrinsicHeight());
return drawFromPath;
}
}, null));
Если источник в теге img имеет орфографическую ошибку, приложение будет разбиваться, потому что метод не сможет найти drawable, поэтому для предотвращения этого может быть добавлено больше кода...
Ответ 2
Ответ от kape123, безусловно, помог мне. Я был так близко.
Бит, который легко пропустить, - это вызов setBounds в Drawable. Документация справки Html.ImageGetter также дает ключ, когда говорится:
Убедитесь, что вы вызываете setBounds() в свой Drawable, если он еще не имеет своих границ.
Ответ 3
Это то же самое, что и принятый ответ, но как класс верхнего уровня (который лучше, если вы хотите использовать его из разных мест):
public class ResourceImageGetter implements ImageGetter {
private Context mContext;
public ResourceImageGetter(Context context) {
mContext = context;
}
@Override
public Drawable getDrawable(String source) {
Resources resources = mContext.getResources();
int identifier = resources.getIdentifier(source, "drawable", mContext.getPackageName());
Drawable res = resources.getDrawable(identifier);
res.setBounds(0, 0, res.getIntrinsicWidth(), res.getIntrinsicHeight());
return res;
}
}
Ответ 4
textView.setText(Html.fromHtml(htmlToSetAsText, new ImageGetter() { @Override public Drawable getDrawable(String source) { String path = "/sdcard/" + source; Drawable bmp = Drawable.createFromPath(path); bmp.setBounds(0, 0, bmp.getIntrinsicWidth(), bmp.getIntrinsicHeight()); return bmp; } }, null));