Html.ImageGetter

时间:2009-11-24 20:08:25

标签: html android

任何人都可以帮我解决如何使用Html.ImageGetter来显示使用html image src标签的图片吗?和示例或好的教程

4 个答案:

答案 0 :(得分:28)

要首先在文本文件中从应用程序资源获取图像,请插入一个html图像标记,如下所示:

<img src="my_image">

请注意,“my_image”只是一个drawable的名称,而不是一个路径。然后使用此代码在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,因此可以添加更多代码以防止此...

答案 1 :(得分:7)

这与接受的答案相同,但作为顶级课程(如果你想在不同的地方使用它会更好):

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;
    }
}

答案 2 :(得分:5)

kape123的答案肯定对我有帮助。我几乎就在那里。

容易错过的是在Drawable上调用 setBounds 。 Html.ImageGetter帮助文档在提示时也提供了线索:

如果尚未设置其边界,请确保在Drawable上调用setBounds()。

答案 3 :(得分:1)

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));