Html.ImageGetter

任何一个可以帮助我如何使用Html.ImageGetter显示图像使用HTML图像src标签? 和示例或很好的教程

Solutions Collecting From Web of "Html.ImageGetter"

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

<img src="my_image"> 

请注意,“my_image”只是一个可绘制的名称而不是path。 然后使用此代码在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标签中的源拼写错误,应用程序将崩溃,因为该方法将无法finddrawable,因此可以添加更多的代码以防止此…

从kape123的答案当然帮助我。 我差不多在那里。

很容易错过的是在Drawable上调用setBounds 。 Html.ImageGetter帮助文档还提供了一个线索,当它说:

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

这与被接受的答案是一样的,但是作为一个顶级的类(如果你想从不同的地方使用它,更好):

 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; } } 
 textView.setText(Html.fromHtml(htmlToSetAsText,new ImageGetter(){                 
     @覆盖
     public Drawable getDrawable(String source){
         String path =“/ sdcard /”+ source;
         Drawable bmp = Drawable.createFromPath(path);
         bmp.setBounds(0,0,bmp.getIntrinsicWidth(),bmp.getIntrinsicHeight());

        返回bmp;
     }
 }, 空值));