Android 如何将文本视图与图像span垂直居中对齐,以span可扩展字符串形式

Android 如何将文本视图与图像span垂直居中对齐,以span可扩展字符串形式,android,imagespan,Android,Imagespan,大家好,我的文本视图有点问题,我在上面使用了一个可扩展的字符串,完全在文本视图的中间,但是文本的其余部分似乎在文本视图的底线上,所以如果我们说|-|是图像跨度,|是文本的其余部分,它是这样的: |-|____ 我需要的是这样的东西: |-|----- 这是我的密码: holder.theMessage.setText(getSmiledText(mContext,mCursor.getString(mCursor.getColumnIndex("message")),holder.the

大家好,我的文本视图有点问题,我在上面使用了一个可扩展的字符串,完全在文本视图的中间,但是文本的其余部分似乎在文本视图的底线上,所以如果我们说|-|是图像跨度,|是文本的其余部分,它是这样的:

|-|____

我需要的是这样的东西:

|-|-----

这是我的密码:

    holder.theMessage.setText(getSmiledText(mContext,mCursor.getString(mCursor.getColumnIndex("message")),holder.theMessage),TextView.BufferType.SPANNABLE);

         //   holder.theMessage.setText(mCursor.getString(mCursor.getColumnIndex("message")));
           if(isright==0){
            holder.theMessage.setBackgroundResource(R.drawable.bubble_yellow);
           }else{
            holder.theMessage.setBackgroundResource(R.drawable.bubble_green);
           }

           holder.theMessage.setGravity(Gravity.CENTER_VERTICAL);


 public static Spannable getSmiledText(Context context, CharSequence text,TextView tv) {
        Spannable spannable = spannableFactory.newSpannable(text);
        addSmiles(context, spannable,tv);   
        return spannable;
        }



 public static boolean addSmiles(Context context, Spannable spannable,final TextView tv) {
        boolean hasChanges = false;
        for (Entry<Pattern,String> entry : emoticons.entrySet()) {
        Matcher matcher = entry.getKey().matcher(spannable);

        while (matcher.find()) {
            boolean set = true;
            for (ImageSpan span : spannable.getSpans(matcher.start(),
                    matcher.end(), ImageSpan.class))
                if (spannable.getSpanStart(span) >= matcher.start()
                        && spannable.getSpanEnd(span) <= matcher.end())
                    spannable.removeSpan(span);
                else {
                    set = false;
                    break;
                }
            if (set) {

                if(sources.get(entry.getValue()).equals("internal")){
                Drawable mDrawable = null;
                try {
                    mDrawable = new BitmapDrawable(context.getResources(),context.getResources().getAssets().open(entry.getValue()));
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                if(types.get(entry.getValue()) == true){
                mDrawable.setBounds(0, 0, getDimensions.MAIN_BUTTON_TEXT_SIZE*4,  getDimensions.MAIN_BUTTON_TEXT_SIZE*4);

                }else{

                int width = mDrawable.getIntrinsicWidth();
                int height = mDrawable.getIntrinsicHeight();
                mDrawable.setBounds(0, 0, width > 0 ? width : 0, height > 0 ? height : 0);  

                }

                hasChanges = true;

                spannable.setSpan(new ImageSpan(mDrawable,ImageSpan.ALIGN_BASELINE),matcher.start(), matcher.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

            }
holder.theMessage.setText(getSmiledText(mContext,mCursor.getString(mCursor.getcolumndex(“message”)),holder.theMessage,TextView.BufferType.SPANNABLE);
//holder.theMessage.setText(mCursor.getString(mCursor.getColumnIndex(“消息”));
如果(isright==0){
holder.theMessage.setBackgroundResource(R.drawable.bubble_黄色);
}否则{
holder.theMessage.setBackgroundResource(R.drawable.bubble_green);
}
holder.theMessage.setGravity(重心垂直);
公共静态Spanable getSmiledText(上下文上下文、字符序列文本、TextView tv){
Spannable Spannable=spannableFactory.newspanable(文本);
addSmiles(上下文、可扩展、电视);
回程可调;
}
公共静态布尔addSmiles(上下文上下文、可扩展、最终文本视图电视){
布尔hasChanges=false;
for(条目:emoticons.entrySet()){
Matcher Matcher=entry.getKey().Matcher(spannable);
while(matcher.find()){
布尔集合=真;
对于(ImageSpan:spannable.getspan)(matcher.start(),
matcher.end(),ImageSpan.class))
if(spannable.getSpanStart(span)>=matcher.start()
&&spannable.getSpanEnd(span)0?宽度:0,高度>0?高度:0);
}
hasChanges=true;
spannable.setSpan(新图像SPAN(可绘制,图像SPAN.ALIGN_基线),matcher.start(),matcher.end(),spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
若你们知道解决方案,请帮我解决它,我已经尝试了所有重力的,但它太奇怪为什么图像是在中间,但其余的文字是在底部