2014-09-10 334 views
5

如問題所示,我正在使用TextView,它將使用SpannableStringBuilder顯示格式化文本。它有多個段落,我想知道使用一些內置跨度來設置段落間距的最簡單(或至少是最簡單的)方法。這可能嗎?或者我會被要求爲此建立一個自定義跨班級嗎?在TextView中使用SpannableStringBuilder的段間距

回答

6

落實LineHeightSpan並覆蓋chooseHeight方法如下

@Override 
public void chooseHeight(CharSequence text, int start, int end, 
     int spanstartv, int v, FontMetricsInt fm) { 
    Spanned spanned = (Spanned) text; 
    int st = spanned.getSpanStart(this); 
    int en = spanned.getSpanEnd(this); 
    if (start == st) { 
     fm.ascent -= TOP_SPACING; 
     fm.top -= TOP_SPACING; 
    } 
    if (end == en) { 
     fm.descent += BOTTOM_SPACING; 
     fm.bottom += BOTTOM_SPACING; 
    } 
} 

不要忘記在你的每一個段落文本的末尾添加\n

+0

如果你能爲Xamarin提供'ILineHeightSpan'的實現,我會墜入愛河。 – Lara 2016-07-12 23:21:21

+2

注意:如果您在EditText中使用此跨度,這也會影響遊標高度。 – Sver 2017-01-27 08:09:25

+0

TOP_SPACING和BOTTOM_SPACING密度是否獨立? – BornToCode 2017-11-06 16:48:45

相關問題