Подтвердить что ты не робот

Margin устанавливается в первую строку 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);

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

4b9b3361

Ответ 1

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

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

Это не идеальное решение, но я думаю, что это будет сделано.

Ответ 2

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

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

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