Использование 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);
Другие вопросы по тегам