Android - 如何使用SpannableString放置文本

时间:2013-06-12 19:09:57

标签: android textview spannablestring

我有下一个列表项,显示两个文本,一个对齐左边,一个对齐右边。目前,每个文本都放在不同的TextView

enter image description here

我只想使用一个TextView。为此,我知道我可以使用SpannableString,但我有几个小时试图找到方法但没有成功。

有谁能告诉我如何将两个文本放在同一个TextView左右对齐一个文本?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这就是我要做的事情:

首先,您需要测量右侧文本的长度。

            float textsize = messageview.getPaint().getTextSize();
                int lenght = int lenght = textsize * text.length();

之后使用leadingMarginSpan:

public class leadingMarginSpan2 implements LeadingMarginSpan.LeadingMarginSpan2{
        private int margin;
        private int lines;

        public leadingMarginSpan2(int lines, int margin){
            this.lines = lines;
            this.margin = margin;
        }
        @Override
        public void drawLeadingMargin(Canvas arg0, Paint arg1, int arg2,
                int arg3, int arg4, int arg5, int arg6, CharSequence arg7,
                int arg8, int arg9, boolean arg10, Layout arg11) {
            // TODO Auto-generated method stub

        }

        @Override
        public int getLeadingMargin(boolean first) {
            if(first){
                return margin;
            }
            else{
                return 0;
            }
        }

        @Override
        public int getLeadingMarginLineCount() {
            return lines;
        }

    }

设置范围:

spantext.setSpan(new leadingMarginSpan2(1, getWidth() - lenght), 0, text.lenght, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);