我已经通过阅读以下帖子在Html.fromHtml方法中实现了ImageGetter:Html.fromHtml problem和Html.ImageGetter。 以下是ImageGetter的代码:
if (mItem != null) {
((TextView) rootView.findViewById(R.id.exercise_detail))
.setText(Html.fromHtml(mItem.description, new ImageGetter(){
@Override public Drawable getDrawable(String source) {
Drawable drawFromPath;
int path =
ExerciseDetailFragment.this.getResources().getIdentifier(source, "drawable",
"com.package.ChaitanyaVarier.mytrainer2go");
drawFromPath = (Drawable) ExerciseDetailFragment.this.getResources().getDrawable(path);
drawFromPath.setBounds(0, 0, drawFromPath.getIntrinsicWidth(),
drawFromPath.getIntrinsicHeight());
return drawFromPath;
}
}, null));
}
以下是名为description(在另一个活动文件中)的字符串中的HTML,它成为路径:
<img src =\"file:///android_asset/img/situp1.png\">
我已将名为situp1.png的图像放在名为img的文件夹中,该文件夹位于assets文件夹中。
问题是我的HTML中的路径没有被正确解析,当我尝试加载包含图像的项目时,应用程序崩溃了。我知道img标签中的字符串已被识别,我通过调试验证了这一点。
答案 0 :(得分:0)
我解决这个问题的方法是改变
<img src =\"file:///android_asset/img/situp1.png\">
到
<img src=\"situp1\">
因为它已经在资源文件夹中,因此是一个可绘制的。
我也不得不改变
ExerciseDetailFragment.this.getResources().getIdentifier(source, "drawable", "com.package.ChaitanyaVarier.mytrainer2go");
到
ExerciseDetailFragment.this.getResources().getIdentifier(source, "drawable", "com.ChaitanyaVarier.mytrainer2go");
我遇到了一个相当愚蠢的问题,只需要更好地理解代码。