android textview里面显示图文混排

1.添加工具类

package com.boya.student.util;


import java.io.BufferedInputStream;
import java.net.URL;
import java.net.URLConnection;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.text.Html.ImageGetter;
import android.util.Log;
import android.view.View;
import android.widget.TextView;


public class URLImageParser implements ImageGetter {


Context c;
TextView container;


/***
* Construct the URLImageParser which will execute AsyncTask and refresh the container
* @param t
* @param c
*/
public URLImageParser(View t, Context c) {
   this.c = c;
   this.container = (TextView)t;
}


public Drawable getDrawable(String source) {
   URLDrawable urlDrawable = new URLDrawable();


   // get the actual source
   ImageGetterAsyncTask asyncTask = 
       new ImageGetterAsyncTask( urlDrawable);


   asyncTask.execute(source);


   // return reference to URLDrawable where I will change with actual image from
   // the src tag
   return urlDrawable;
}


public class ImageGetterAsyncTask extends AsyncTask<String, Void, Drawable>  {
   URLDrawable urlDrawable;


   public ImageGetterAsyncTask(URLDrawable d) {
       this.urlDrawable = d;
   }


   @Override
   protected Drawable doInBackground(String... params) {
       String source = params[0];
       return fetchDrawable(source);
   }


   @Override
   protected void onPostExecute(Drawable result) {
       // set the correct bound according to the result from HTTP call
       Log.d("height",""+result.getIntrinsicHeight());
       Log.d("width",""+result.getIntrinsicWidth());
       urlDrawable.setBounds(0, 0, 0+result.getIntrinsicWidth(), 0+result.getIntrinsicHeight()); 


       // change the reference of the current drawable to the result
       // from the HTTP call
       urlDrawable.drawable = result;


       // redraw the image by invalidating the container
       URLImageParser.this.container.invalidate();
       // For ICS
       URLImageParser.this.container.setHeight((URLImageParser.this.container.getHeight() 
       + result.getIntrinsicHeight()));


       // Pre ICS
       URLImageParser.this.container.setEllipsize(null);
   }


   /***
    * Get the Drawable from URL
    * @param urlString "http://www.chinaliberal.com:8080/svc/"
    * @return
    */
   public Drawable fetchDrawable(String urlString) {
       try {
           URL aURL = new URL(InterfacePathConfig.Image_Path+urlString);
           final URLConnection conn = aURL.openConnection(); 
           conn.connect(); 
           final BufferedInputStream bis = new BufferedInputStream(conn.getInputStream()); 
           final Bitmap bm = BitmapFactory.decodeStream(bis);
           Drawable drawable = new BitmapDrawable(bm);
           drawable.setBounds(0,0,bm.getWidth(),bm.getHeight());
           return drawable;
       } catch (Exception e) {
           return null;
       } 
   }
}
}


2.使用

URLImageParser p = new URLImageParser(tv_content, context);
Spanned htmlSpan = Html.fromHtml(lCoontentKeWenModel.getContent(), p, null);
tv_content.setText(htmlSpan);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值