Android TextView 使用外部文件
最近一个项目,需要在文字中插入一些图片。通过网上搜索发现TextView可以通过SpannableString和ImageSpan来实现。
自己就马上试了下,没有成功。
因为我是需要使用外部文件的,不是内部资源的drawable。
通过几次尝试,发现是构建ImageSpan方法不对。
若是使用内部资源,可以直接使用构造方法ImageSpan(Drawable),而使用外部图片,需要用构造方法ImageSpan(Context, Bitmap)。
刚开始的时候我就是把Bitmap构建为一个BitmapDrawable再传给ImageSpan(Drawable),才一直无法成功。
以下是示范的代码:
String lMessage = "Hello [smill] world!";
Bitmap lBitmap = BitmapFactory.decodeFile("/mnt/sdcard/img/smill.png"); // 加载外部图片文件
// 注释的方式是不能成功显示图片的
// Drawable lDrawable = new BitmapDrawable(pContext.getResources(), lBitmap);
// ImageSpan lSpan = new ImageSpan(lDrawable);
ImageSpan lSpan = new ImageSpan(pContext, lBitmap);
SpannableString pSpannableString = new SpannableString(lMessage);
pSpannableString.setSpan(lSpan, pSatIdx, pEndIdx, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
lTextView.setText(pSpannableString);