我对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);
我不明白为什么当我在第一个字符之前添加图像跨度时,它被删除,我想在字符串的开头添加图标而不删除第一个字符。
答案 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);