我正在尝试在TextView
上使用自定义字体。 TextView
文字设置为textView1.setText(Html.fromHtml(htmlText));
html包含粗体和斜体
现在。我购买了自定义字体。该字体带有3个不同的文件(ttf)。一个用于常规,一个用粗体和斜体。
如何将这三个字体文件应用于textview?
答案 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文本以及这三种跨度类型中的任何一种适当的字体,在需要时,甚至可以让您使用混合完全不同字体的自定义字体系列,而从字面上看不必完全来自同一系列。