Использование span для вставки вкладки в текстовое представление
Есть ли способ добавить символ табуляции к фрагменту текста, используя span
в 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);
Где Эд TextView
, Вышеприведенный фрагмент ничего не делает, и документация настолько бесполезна. Есть ли способ добавить символ табуляции в TextView
используя пролеты?
3 ответа
Решение
Просто добавьте "\t" для вкладки, "\n" для новой строки. Например:
String source = "Hello!\tLets select some text!";
Да. комбинация "\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.
Использовать этот.
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);