设置具有不同大小的textview的文本

时间:2013-10-28 15:48:59

标签: android textview

我有TextView,我希望文本的每个单词都有不同的大小和字体。

我知道您可以将文本的一部分设置为粗体,或者使用和标记设置下划线。

但是,如果我需要文本的一部分大小为18sp并且具有自定义字体(来自资源)而另一部分具有不同的自定义字体并且大小为14sp。

我可以将TextView拆分为单独的TextViews,但我想避免这种情况。

2 个答案:

答案 0 :(得分:8)

对于不同的字体大小,您应该使用RelativeSizeSpan作为参考RelativeSizeSpan

TextView tv;
final SpannableString text = new SpannableString("Hello World");
text.setSpan(new RelativeSizeSpan(2.0f), 0, 5,
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setSpan(new RelativeSizeSpan(1.5f), 5, 11,
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.setText(text);

对于FontStyle,请使用StyleSpan作为参考StyleSpan

因此,在 StyleSpan 的帮助下,使用custom typeface可以使用。

text.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), start,
                    end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);

希望这会对你有所帮助。

答案 1 :(得分:0)

您可以使用自己喜欢的所有样式编写HTML代码,然后在setText()方法中使用Html.fromHtml()

<强> E.g:

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));

参考这个问题。它可能会帮助你: Custom Textview with Html text and Custom Font whole Android application