2011-10-07 11 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

あなたは2つの別々のtextviewsを取ることができます:1番目の段落のための1つと残りのもののための他の。最初のテキストビューのスパンを設定し、それ以外のものはそのままにします。私は、他の方法はないと思う。 – Hiral

答えて

2

ここで提案されているように、私はまた、最初にいくつかのスペースを追加することをお勧めします。 TextViewの最初の行に余白スペースが必要な場合は、本当に先進的なことをする必要がある理由はありません。

あなたが後の時点でのTextViewのテキストを変更したり、使用する必要がある場合は、あなただけの文字列の一部だけを取得するにはsubstring()メソッドを使用することができ、すなわちs.substring(2, s.length());

これは完璧な解決策ではないのですが、私はそれがすると思う。

+0

diffの文字は表示するにはdiffの長さのUIが必要です(例: 'm'は 'i'よりも長さが必要です)。そして、スペースの長さはすべての文字の長さと等しくありません。 –

5

あなたはすでにあなた自身の質問に既に回答しています。
あなたがする必要があるのは、s.length()の代わりにspan lenghtを1に設定することだけです。

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

このように、マージンは最初の段落にのみ適用されます。

関連する問題