无法在textview中的setText方法中查找文本的大小

时间:2016-12-02 07:42:38

标签: android textview

我有一个自定义类,它扩展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中设置文本,我不会遇到问题。但我想知道是否有一个修复,以及如何在实例化之前调用对象上的方法。

1 个答案:

答案 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);