任何人都可以帮我解决如何使用Html.ImageGetter来显示使用html image src标签的图片吗?和示例或好的教程
答案 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));