2017-10-09 20 views
0

実際には、Spannable文字列内のテキスト間の行スペースを増やそうとしています。次に、改行文字のスパンサイズを大きくすることでそれを行いたいと思います。しかし、2番目の改行は影響を受けていないようです。Android:Spannable Stringの改行の高さを変更できない

まず、コードが動作することを示すための区切り文字として 'a'を使用します。

private fun getCenterSpannableText() : SpannableString { 
    val currency = "Currency" 
    val total = "Total" 
    val subtitle = "Subtitle" 
    val delimiter = "\n" 
    val finalStr = "$currency$delimiter$total$delimiter$subtitle" 

    val currencyIndex = finalStr.indexOf(currency) 
    val totalIndex = finalStr.indexOf(total) 
    val subtitleIndex = finalStr.indexOf(subtitle) 

    val s = SpannableString(finalStr) 
    s.setSpan(RelativeSizeSpan(1.4f), currencyIndex, currency.length, 0) 
    s.setSpan(ForegroundColorSpan(ContextUtil.instance.getColor(R.color.colorGrey5)), currencyIndex, currency.length, 0) 

    s.setSpan(RelativeSizeSpan(1.8f), totalIndex, totalIndex + total.length, 0) 
    s.setSpan(ForegroundColorSpan(ContextUtil.instance.getColor(R.color.colorGrey5)), totalIndex, totalIndex + total.length, 0) 

    s.setSpan(RelativeSizeSpan(1f), subtitleIndex, subtitleIndex + subtitle.length, 0) 
    s.setSpan(ForegroundColorSpan(ContextUtil.instance.getColor(R.color.colorGrey2)), subtitleIndex, subtitleIndex + subtitle.length, 0) 

    //make the \n have bigger fonts 
    s.setSpan(RelativeSizeSpan(2.5f), currencyIndex + currency.length, currencyIndex + currency.length + delimiter.length, 0) 
    s.setSpan(RelativeSizeSpan(2.5f), totalIndex + total.length , totalIndex + total.length + delimiter.length, 0) 

    return s 
} 

出力がこれです:それから私は "\ nを" に区切り文字を変更

enter image description here

、それが正しく表示されません:

enter image description here

イムは、それを実行していますAPI24エミュレータ

答えて

0

私は、あなたが実際にこれをしたいと思います

Currency\n 
Total\n 
Subtitle 

た場合:ます。■起こってはこれです

Currency\n 
Total\n 
Subtitle\n 

EDIT:あなたは

val finalStr = "$currency$delimiter$total$delimiter$subtitle$delimiter" 
+0

なぜにあなたのコードを変更しようとする場合があります意味 私はそれをしたいと思うでしょうか?私はすべての3つの値が別々の行にあるようにします – iori24

+0

あなたはTotalとSubtitleの間のより大きな行間を必要としますか?私が示唆したことをやってみましたが、失敗しましたか、コードの1行を貼り付けるのは、もう一度説明しようとするよりもうまくいっていますか? 編集:私の悪い、答えを編集するつもりです。今は別の行にあるはずです。 – Bjelis

+0

最後に改行を追加すると、より良い結果が得られます。次に、最後の新しい行に別のs.setSpan(RelativeSizeSpan()...)を追加し、最良の結果を得るために値を丸める必要があります。しかし、私はなぜそれが最後に1つを最後にする必要があるか分からない。ありがとうbtw – iori24

関連する問題