2011-10-07 145 views
11

的第一行我想只设置的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); 

这里开始页边距设置为段落的所有行..我不希望这样。我想开始保证金被应用于第一线仅..请帮助..

+1

我想,你必须只使用空格.. – Hiral

+0

有没有其他办法? – ShineDown

+2

然后你可以采取两个单独的文字视图:1为第一段,其他为其余的。只是为第一个textview设置跨度,并让其他的像他们一样。我想,你没有别的办法。 – Hiral

回答

2

因为它已被建议在这里,我也认为最好的办法是简单地在开始添加一些空间。如果你只需要TextView第一行的空白空间,我看不出有什么理由需要做一些真正先进的事情。

如果您需要更改或使用TextView的文本在以后,你可以只使用substring()方法来获得只有字符串的一部分,即s.substring(2, s.length());

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

+0

麻烦的是DIFF字符需要UI的DIFF长度来显示,(例如:“M”需要更多的长度比“I”),和一个空间长度是不与所有字符长度相等。 –

5

你其实已经回答了你自己的问题。
所有你需要做的是跨度lenght设置为1,而不是s.length()。

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

这种方式的余量只适用于第一段。