2

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

我知道您可以将部分文本设置为粗体或带有和标签的下划线。

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

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

4

2 回答 2

8

对于不同的字体大小,您应该使用RelativeSizeSpanReference 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

所以可以在StyleSpancustom typeface的帮助下使用。

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

希望这会帮助你。

于 2013-10-28T16:03:55.837 回答
0

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

例如:

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

或者:

参考这个问题。它可能会对您有所帮助: 带有 Html 文本的自定义 Textview 和自定义字体整个 Android 应用程序

于 2013-10-28T16:00:00.967 回答