margin设置为textView的第一行

时间:2011-10-07 07:08:04

标签: android string 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);

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

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

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

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