使用跨度在文本视图中插入制表符



有没有办法在textview中使用span将制表符添加到一段文本中?从开发人员文档中,我遇到了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

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

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

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

使用它。

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);

相关内容

  • 没有找到相关文章

最新更新