设置textView的第一行的边距。

12

我想仅对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);

这里设置了段落的起始边距,适用于所有行。但我不希望如此,我希望起始边距仅适用于第一行。请帮忙解决。


1
我认为,你必须只使用空格。 - Hiral Vadodaria
2
然后您可以使用两个单独的TextView:一个用于第一段,另一个用于其余部分。只需为第一个TextView设置Span,让其他内容保持不变。我认为,您别无选择。 - Hiral Vadodaria
2个回答

6
你实际上已经回答了自己的问题。 你只需要将span长度设置为1而不是s.length()
if (s.length() > 0) {
    s.setSpan(new android.text.style.LeadingMarginSpan.Standard(30, 0), 0, 1, 0);
}

那样边距只会应用于第一个段落。

2
正如此处所建议的,我也认为最好的解决方案是简单地在开头添加几个空格。如果您只需要在 TextView 的第一行中使用边距空间,则我不认为您需要做什么非常高级的事情。
如果您需要稍后更改或使用 TextView 中的文本,您可以使用 substring() 方法仅获取字符串的一部分,即 s.substring(2, s.length()); 这不是一个完美的解决方案,但我认为它足以胜任。

问题在于不同的字符需要不同长度的UI来显示,例如:'m'需要比'i'更长的长度,而空格的长度与所有字符的长度并不相等。 - Phong Nguyen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接