Html.ImageGetter

d-m*_*man 16 html android

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

Lum*_*mis 28

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

<img src="my_image">
Run Code Online (Sandbox Code Playgroud)

请注意,"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));
Run Code Online (Sandbox Code Playgroud)

如果img标记中的源拼写错误,则应用程序将崩溃,因为该方法将无法找到drawable,因此可以添加更多代码以防止此...


BoD*_*BoD 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;
    }
}
Run Code Online (Sandbox Code Playgroud)


Qui*_*son 5

kape123的答案肯定对我有帮助.我快到那里了.

容易遗漏的是在Drawable上调用setBounds.Html.ImageGetter帮助文档还提供了一个线索:

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