Html在文本视图中使用不同的字体为粗体和斜体

时间:2012-11-04 17:07:27

标签: android

我正在尝试在TextView上使用自定义字体。 TextView文字设置为textView1.setText(Html.fromHtml(htmlText));

html包含粗体和斜体

现在。我购买了自定义字体。该字体带有3个不同的文件(ttf)。一个用于常规,一个用粗体和斜体。

如何将这三个字体文件应用于textview?

4 个答案:

答案 0 :(得分:2)

此链接将帮助您了解如何自定义android字体:http://mobile.tutsplus.com/tutorials/android/customize-android-fonts/

其中涉及如何将这些字体文件应用于textview,您需要先将它们集成到项目中:

Typeface tf = Typeface.createFromAsset(this.getAssets(),
        "fonts/xxx.TTF");
txt1.setTypeface(tf);

ttf文件应放在 - >资产/字体/ xxx.TTF

所有需要的详细信息都在段落中:“使用自定义字体”

答案 1 :(得分:0)

我想你想对你的代码做一个快速重构,以便整合资产。

我会扩展TextView并尝试解析HTML并在onDraw上应用正确的字体。

覆盖setText并解析参数,为角色创建一个Map以及应该使用的正确字体。

然后,覆盖onDraw并在绘制之前,根据您在上一步中创建的地图更改super.getPaint()的字体。

代码应该与How to correctly draw text in an extended class for TextView?中的onDraw方法中显示的代码类似,但是您将设置先前确定的字体,而不是应用super.getTypeface()

希望它可以帮到你

答案 2 :(得分:0)

您是否尝试将所有字体逐个应用于相同的textView文本。 我认为你可以将更多的效果应用于同一个TextView。

米洛斯的代码是对的。 此外,我已经把自己的解释。 您可以将字体添加到资产foldera中,之后可以逐个将该字体应用于textView。

不确定但可能对您有用。

我的代码:

Typeface font1 = Typeface.createFromAsset(getAssets(), "YOUR_FONT1.ttf");
Typeface font2 = Typeface.createFromAsset(getAssets(), "YOUR_FONT2.ttf");
Typeface font3 = Typeface.createFromAsset(getAssets(), "YOUR_FONT3.ttf");

chips_text.setTypeface(font1);
chips_text.setTypeface(font2);
chips_text.setTypeface(font3);

随意发表评论和查询。

答案 3 :(得分:0)

如果您使用的是高于v26的支持库或新的AndroidX库,那么对于API 16+而言,目前最好的方法是定义字体资源文件,基本上是在fonts文件夹中添加常规和斜体ttf字体文件,并创建一个字体资源xml,基本上使它看起来像

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font
    app:fontStyle="normal"
    app:fontWeight="400"
    app:font="@font/custom_regular_font" />
<font
    app:fontStyle="italic"
    app:fontWeight="400"
    app:font="@font/custom_italic_font" />
<font
    app:fontStyle="normal"
    app:fontWeight="700"
    app:font="@font/custom_bold_font" />
</font-family>

最后一个是粗体字体,将此xml假设custom_font_family.xml应用为android:fontFamily =“ @ font / custom_font_family”到您的textview中,现在您使用fromHtml设置的html文本以及这三种跨度类型中的任何一种适当的字体,在需要时,甚至可以让您使用混合完全不同字体的自定义字体系列,而从字面上看不必完全来自同一系列。