Подтвердить что ты не робот

Html.ImageGetter

Может ли кто-нибудь помочь мне в использовании Html.ImageGetter для отправки изображений с использованием тега html image src? и пример или хороший учебник

4b9b3361

Ответ 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));