【问题标题】:Set text of a textview with different sizes设置不同大小的文本视图的文本
【发布时间】:2013-10-28 15:48:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android textview


    【解决方案1】:

    你应该使用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);
    

    对于字体样式,请使用StyleSpan 作为参考StyleSpan

    所以在StyleSpan的帮助下可以使用custom typeface

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

    希望这会对你有所帮助。

    【讨论】:

    • 我用的是AbsoluteSizeSpan,因为你可以设置文本大小以px为单位,而不是设置文本大小比例的RelativeSizeSpan。
    【解决方案2】:

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

    例如:

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

    或者:

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

    【讨论】:

    • 如果我想使用资产中的自定义字体怎么办?
    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多