TextView用ImageSpan设置图片表情, TextView设置的是sigleline=true;文字显示一行不完最后会显示...。但是表情的话,好像不受sigleline控制,不会显示...,会一直往右显示,以至于出现最右边界的一个表情图片只显示一半的情况。  我想要的效果是:在TextView的右边界,如果是表情且显示不全的话,我想用“...”来替代。

解决方案 »

  1.   

    每个表情对应一个字符串,像这样
    public class SmileUtils {
    public static final String ee_1 = "[):]";
    public static final String ee_2 = "[:D]";
    public static final String ee_3 = "[;)]";
    }我的TextView设置文本(表情也是文本),是这样的
    holder.message.setText(SmileUtils.getSmiledText(getContext(), getMessageDigest(lastMessage, (this.getContext()))), BufferType.SPANNABLE);getSmiledText()是这样的
    public static Spannable getSmiledText(Context context, CharSequence text) {
        Spannable spannable = spannableFactory.newSpannable(text);
        addSmiles(context, spannable);
        return spannable;
    }
      

  2.   

    LZ去测试下,我这里测试QQ软件消息列表那里也是这样的,表情显示了一半。
      

  3.   

    第一步:动态获得宽度
    mTextView.getViewTreeObserver().addOnGlobalLayoutListener()
    第二步:末尾省略
    TextUtils.ellipsize()存在问题:单行可以;多行不行