我有一个自定义类,它扩展TextView,用自定义位图表情符号替换最后一个字符。出于某种原因,表情符号总是比文本小得多。这是重写方法
@Override
public void setText(CharSequence text, BufferType type) {
super.setText("H", type);
SpannableString span = new SpannableString(text);
Bitmap emoji = BitmapFactory.decodeResource(getResources(), R.drawable.emoji);
int size = (int) (-this.getPaint().ascent());
Bitmap scaledEmoji = Bitmap.createScaledBitmap(emoji, size, size, true);
emoji.recycle();
ImageSpan ispan = new ImageSpan(c, scaledEmoji, ImageSpan.ALIGN_BASELINE);
span.setSpan(ispan, text.length()-1, text.length(), 0);
}
super.setText(span, type);
}
编辑:确定所以问题是在构造函数之前调用了setText方法。如果我用实际设置文本而不是在xml中设置文本,我不会遇到问题。但我想知道是否有一个修复,以及如何在实例化之前调用对象上的方法。
答案 0 :(得分:0)
试试这个
ImageSpan ispan = new ImageSpan(c, scaledEmoji,ImageSpan.ALIGN_BASELINE);
spannable.setSpan(ispan, getText().length()-1,
getText().length() + emoji.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);