3

span有没有办法使用in将制表符添加到一段文本textview?从开发人员文档中,我遇到了TabStopSpan见这里)并尝试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使用跨度?

4

3 回答 3

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 构造函数中使用有意义的值,最好基于屏幕尺寸。

于 2014-08-14T10:44:59.373 回答
2

只需为选项卡添加“\t”,为新行添加“\n”。例如:

String source = "Hello!\tLets select some text!";
于 2013-10-01T16:25:05.367 回答
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);
于 2018-04-24T09:47:28.953 回答