Android 文本视图中的Html,粗体和斜体的字体不同
我正在尝试在Android 文本视图中的Html,粗体和斜体的字体不同,android,Android,我正在尝试在文本视图上使用自定义字体。TextView文本设置为textView1.setText(Html.fromHtml(htmlText)) html包含粗体和斜体跨距 现在。我买了一种定制字体。该字体附带3个不同的文件(ttf)。一个表示常规,一个表示粗体,一个表示斜体 如何将这三个字体文件应用于文本视图?此链接将帮助您了解如何自定义android字体: 关于如何将这些字体文件应用于textview,您需要首先在项目中集成它们: Typeface tf = Typeface.creat
文本视图上使用自定义字体。TextView
文本设置为textView1.setText(Html.fromHtml(htmlText))代码>
html包含粗体和斜体跨距
现在。我买了一种定制字体。该字体附带3个不同的文件(ttf)。一个表示常规,一个表示粗体,一个表示斜体
如何将这三个字体文件应用于文本视图?此链接将帮助您了解如何自定义android字体:
关于如何将这些字体文件应用于textview,您需要首先在项目中集成它们:
Typeface tf = Typeface.createFromAsset(this.getAssets(),
"fonts/xxx.TTF");
txt1.setTypeface(tf);
ttf文件应放在-->assets/fonts/xxx.ttf中
所有需要的细节都在“使用自定义字体”一段中。我想您希望对代码进行快速重构,以便合并资产
我将扩展TextView并尝试解析HTML,并在onDraw应用适当的字体
重写setText
并解析参数,为应使用的字符和正确的字体创建映射
然后,覆盖onDraw
并在绘制之前,根据上一步创建的映射更改super.getPaint()
的字体
代码应该与中的onDraw
方法中显示的代码相同,但是您将设置先前确定的字体,而不是应用super.getTypeface()
希望它能帮助您尝试将所有字体逐一应用于同一文本视图的文本。
我认为这样你就可以对同一个文本视图应用更多的效果
米洛斯的密码是对的。
此外,我还提出了自己的解释。
您可以将字体添加到资产文件夹中,然后可以将该字体逐个应用到文本视图
不确定,但可能对你有用
我的代码:
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);
请随意评论和查询。API 16+目前最好的方法是定义字体资源文件。如果您正在使用v26以上的支持库或新的AndroidX库,基本上您可以在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”应用到您的文本视图中,现在您使用fromHtml设置的任何html文本以及三种跨度类型中的任何一种都将在需要时使用正确的字体,这甚至可以让您拥有一个混合了完全不同字体的自定义字体系列,而不必来自同一系列。使用包含不同样式(常规、粗体、斜体等)的单个字体文件很容易。问题在于每种字体位于不同文件中的字体(即font\u regular.ttf、font\u bold.ttf、font\u italic.ttf)。使用setTypeface
只能设置一种字体,因此只能使用一种样式。我需要的是在单个文本视图中使用多个字体文件。根据以下事实:setTypeface()将用自定义ttf文件替换android使用的默认ttf文件:在单个文本视图中使用不同字体的唯一方法(目前)是手动将这些字体合并到一个ttf文件中。这可以通过使用字体编辑器(如)来完成。希望有帮助。我看不到在TTFEdit(或我测试过的任何其他字体编辑软件)中合并两个文件的选项。必须问关于合并字体文件的问题:)这里有一个例子:你可以谷歌TTF EditorI看不到链接中的例子,你能详细说明如何合并字体文件吗?是的,我看了。不幸的是,每次调用setTypeface都会覆盖上一次调用。好的,那么你必须按照米洛斯的回答。必须创建一种包含所有所需内容的字体,然后将其设置为“指定视图”。