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); 

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

正如这里所建议的那样,我认为最好的解决方案是在开头添加一些空格。 如果你只需要TextView第一行的边距空间,我看不出你为什么需要做一些非常先进的事情。

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

这不是一个完美的解决方案,但我认为它会做到。

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

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

这样,保证金将仅适用于第一段。