使用span在textview中插入选项卡

时间:2013-10-01 16:15:57

标签: android textview tabstop

有没有办法使用span中的textview为一段文字添加标签字符?在开发人员文档中,我遇到了TabStopSpansee here)并试图在TextView中使用它,如下所示:

String source = "Hello World! Let's select some text!!";

        SpannableString s = new SpannableString(source);
        s.setSpan(new TabStopSpan() {
            @Override
            public int getTabStop() {
                return 100;
            }
        }, 5, 10, 0);
ed.setText(s, BufferType.SPANNABLE);  

其中ed是TextView。上面的代码段没有做任何事情,文档也没那么简单。有没有办法使用跨度向TextView添加制表符?

3 个答案:

答案 0 :(得分:4)

是。结合" \ t"和TabStopSpannable将成功。 下面的代码片段在firstString和secondString之间添加了一个标签:

    SpannableStringBuilder span = new SpannableStringBuilder(firstString +"\t"+ secondString);
    span.setSpan(new TabStopSpan.Standard(600), 0, span.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE );
    }

    ((TextView) v).setText(span, TextView.BufferType.SPANNABLE);

小心在TabStopSpan.Standard构造函数中使用有意义的值,最好是基于screendimensions。

答案 1 :(得分:1)

只需为标签添加“\ t”,为新行添加“\ n”。 例如:

String source = "Hello!\tLets select some text!";

答案 2 :(得分:0)

使用它。

public static SpannableStringBuilder getTabText(String text, float stop)
{
    int column = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, stop, SystemMaster.getResources().getDisplayMetrics());

    SpannableStringBuilder span = new SpannableStringBuilder(text);
    span.setSpan(new TabStopSpan.Standard(column), 0, span.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    return span;
}

然后

Text text = "xx \t yy \n aa \t bb";
SpannableStringBuilder sp = TextHelper.getTabText(text, 100);
tv.setText(sp);