Imagespan删除textview中已存在的字符

时间:2013-11-30 16:51:01

标签: android android-layout android-view android-ui

我对ImageSpan有一点问题,我想在一个spannable字符串中插入一个文本视图第一个位置的图标。

Textview将呈现如下:icon + HELLO + hello

我的代码:

text += df.format(seconds);
// text += "."+Integer.toString(milliseconds);
Bitmap icon = BitmapFactory.decodeResource( getResources(), R.drawable.mb_ic_chrono );

SpannableString label = new SpannableString("");
SpannableString data = new SpannableString("");
label = new SpannableString("Temps \n");
label.setSpan(new RelativeSizeSpan(0.5f), 0, label.length(), 0);

data = new SpannableString(text);
data.setSpan(new RelativeSizeSpan(1f), 0, data.length(), 0);

SpannableString sentence=new SpannableString(TextUtils.concat(label,data));
sentence.setSpan(new ImageSpan(icon,ImageSpan.ALIGN_BASELINE),0,1 , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setText(sentence,BufferType.SPANNABLE);

我不明白为什么当我在第一个字符之前添加图像跨度时,它被删除,我想在字符串的开头添加图标而不删除第一个字符。

1 个答案:

答案 0 :(得分:2)

一种可能的解决方法是在文本前添加一个空格:“Temps \ n”或创建一个带有ImageSpan集的中间SpannableString。

text += df.format(seconds);
Bitmap icon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher );

SpannableString label = new SpannableString("Temps \n");
label.setSpan(new RelativeSizeSpan(0.5f), 0, label.length(), 0);

SpannableString data = new SpannableString(text);
data.setSpan(new RelativeSizeSpan(1f), 0, data.length(), 0);

SpannableString iconTextSpan = new SpannableString(" ");
//if you have a context
iconTextSpan.setSpan(new ImageSpan(context,icon,ImageSpan.ALIGN_BASELINE),0,1 , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//else
//iconTextSpan.setSpan(new ImageSpan(icon,ImageSpan.ALIGN_BASELINE),0,1 , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

SpannableString sentence = new SpannableString(TextUtils.concat(iconTextSpan,label,data));
setText(sentence,BufferType.SPANNABLE);