поле установлено в первой строке textView - PullRequest
11 голосов
/ 07 октября 2011

Я хочу установить начальное поле только для первой строки 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 ]

5 голосов
/ 27 марта 2013

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

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

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

2 голосов
/ 08 октября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...