伙计我有一个显示html文本的textview,里面有image标签。 我想使用imageGetter显示图像,但它只显示一个小蓝框。 几天来我一直在处理这个问题。所以请帮帮我。
我目前的代码就是这个
TextView textD = (TextView) findViewById(R.id.body);
textD.setText(Html.fromHtml(Body, imgGetter, null));
textD.setMovementMethod(new ScrollingMovementMethod());
private ImageGetter imgGetter = new ImageGetter() {
public Drawable getDrawable(String source) {
try{
InputStream is = (InputStream) new URL(source).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e){
Log.d("image", imageSource, e);
return null;
}
}
};
答案 0 :(得分:1)
参考文献说:
必须调用setBounds(Rect)方法来告诉Drawable在哪里 它是绘制的,它应该有多大。所有Drawables都应该尊重 请求的大小,通常只是通过缩放他们的图像。一个客户 可以找到一些Drawables的首选大小 getIntrinsicHeight()和getIntrinsicWidth()方法。
http://developer.android.com/reference/android/graphics/drawable/Drawable.html
所以试试这个:
d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
它会起作用!
答案 1 :(得分:0)
LinearLayout ll = new LinearLayout(this);
TextView question = new TextView(this);
question.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
question.setTextSize(20);
question.setTextColor(Color.WHITE);
CharSequence text2 = Html.fromHtml(qstnText, new Html.ImageGetter(){
public Drawable getDrawable(String source){
System.out.println("Source:::"+source);
String path = Environment.getExternalStorageDirectory().getAbsolutePath() +source;
File f = new File(path);
// Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
Drawable bmp = Drawable.createFromPath(f.getAbsolutePath());
bmp.setBounds(0,0,50,50); return bmp;
}
}, null);
question.setText(text2);
ll.addView(question);
它对我来说很好......试试吧