有没有办法在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);