Поле установлено в первой строке textView

Я хочу установить начальное поле только для первой строки TextView (не первой строки каждого абзаца)? Я использовал следующий код:

SpannableString s = new SpannableString("this is a test"+"\n"+"this is a test");
s.setSpan(new android.text.style.LeadingMarginSpan.Standard(30, 0), 0, s.length(), 0);
textView .setText(s);

Здесь начальное поле устанавливается для всех строк абзаца.. Я не хочу этого. Я хочу, чтобы начальная маржа применялась только для первой строки.. Пожалуйста, помогите..

2 ответа

Решение

Как было предложено здесь, я также думаю, что лучшим решением будет просто добавить несколько пробелов в начале. Если вам нужно только поле для запаса в самой первой строке TextViewЯ не вижу причин, по которым вам нужно было бы сделать что-то действительно продвинутое.

Если вам нужно изменить или использовать текст в TextView на более позднем этапе, вы можете просто использовать substring() способ получить только часть строки, т.е. s.substring(2, s.length());

Это не идеальное решение, но я думаю, что оно подойдет.

Вы на самом деле уже ответили на свой вопрос.
Все, что вам нужно сделать, это установить длину пролета в 1 вместо s.length().

if (s.lenght() > 0) {
    s.setSpan(new android.text.style.LeadingMarginSpan.Standard(30, 0), 0, 1, 0);
}

Таким образом, маржа будет применяться только к первому абзацу.

Другие вопросы по тегам