margin设置为textView的第一行

Shi*_*own 12 string android 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);
Run Code Online (Sandbox Code Playgroud)

这里为段落的所有行开始设置边距.我不希望这样.我想将起始保证金仅适用于第一行..请帮忙..

Ale*_*xey 5

你实际上已经回答了自己的问题.
您需要做的就是将span lenght设置为1而不是s.length().

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

这样,保证金只会应用于第一段.


Mic*_*Bak 2

正如这里所建议的,我也认为最好的解决方案是在开头简单地添加一些空格。如果您只需要第一行的边距空间TextView,我不认为您需要做一些真正高级的事情。

如果稍后需要更改或使用 TextView 中的文本,则可以使用该substring()方法仅获取字符串的一部分,即s.substring(2, s.length());

这不是一个完美的解决方案,但我认为它可以。