我正在尝试使用Html.fromHtml
在Base64中显示img我有一个标签,其中包含一个图像的Base64字符串。
那是我的代码:
public class GlossaryAdapter extends BaseAdapter{
...
private Resources res;
public GlossaryAdapter(Context context, ...) {
this.res = context.getResources();
...
}
public View getView(int position, View convertView, ViewGroup arg2) {
...
holder.tvContent.setText(Html.fromHtml(glossary.getContent(), new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
try {
byte[] data;
data = Base64.decode(source,Base64.DECODE);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
return new BitmapDrawable(res, bitmap);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}, null));
glossary.getContent()包含:
<img src="AAAY5671NF..." />
我在html页面中测试了这个字符串并且正常工作。显示图片。
我使用的是Android 1.6。 这个Base64类:http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html
我没有错误。但没有任何表现。 如果我将返回值改为'null',我会得到一个小灰色方块。
任何想法?
答案 0 :(得分:3)
很长一段时间后...... 从db获取图像字节(BLOB)。 编码到Base64并传递给src。 解码并设置位图的边界。 作品!
@Override
public Drawable getDrawable(String source) {
try {
byte[] data;
data = Base64.decode(source,Base64.DECODE);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
Drawable d = new BitmapDrawable(res, bitmap);
d.setBounds(0,0,72,72) // <-----
return d;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}