问题描述
使用 XML字体功能,您可以为字体系列指定各种字体粗细.例如:
Using the Fonts in XML feature you can specify various font weights for a font family. For example:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/archivo_narrow_regular" android:fontWeight="400" android:fontStyle="normal"
app:font="@font/archivo_narrow_regular" app:fontWeight="400" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_regular_italic" android:fontWeight="400" android:fontStyle="italic"
app:font="@font/archivo_narrow_regular_italic" app:fontWeight="400" app:fontStyle="italic"/>
<font android:font="@font/archivo_narrow_medium" android:fontWeight="500" android:fontStyle="normal"
app:font="@font/archivo_narrow_medium" app:fontWeight="500" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_medium_italic" android:fontWeight="500" android:fontStyle="italic"
app:font="@font/archivo_narrow_medium_italic" app:fontWeight="500" app:fontStyle="italic"/>
<font android:font="@font/archivo_narrow_semibold" android:fontWeight="600" android:fontStyle="normal"
app:font="@font/archivo_narrow_semibold" app:fontWeight="600" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_semibold_italic" android:fontWeight="600" android:fontStyle="italic"
app:font="@font/archivo_narrow_semibold_italic" app:fontWeight="600" app:fontStyle="italic"/>
<font android:font="@font/archivo_narrow_bold" android:fontWeight="700" android:fontStyle="normal"
app:font="@font/archivo_narrow_bold" app:fontWeight="700" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_bold_italic" android:fontWeight="700" android:fontStyle="italic"
app:font="@font/archivo_narrow_bold_italic" app:fontWeight="700" app:fontStyle="italic"/>
</font-family>
但是我无法弄清楚如何真正利用这些权重.可以是XML(布局/样式)文件中的内容,也可以是Java代码中的形式.它们不是TextView
可用的fontWeight
属性,并且 Typeface
对象是从 ResourcesCompat.getFont(context, R.font.archivo_narrow)
没有提及字体粗细.
But I cannot figure out how to actually make use of each of these weights; either in an XML (layout/style) file, or in Java code. Their is no fontWeight
attribute available for TextView
, and the Typeface
object created from ResourcesCompat.getFont(context, R.font.archivo_narrow)
has no mention of font weights.
我意识到我只能指定特定的字体资源(即R.font.archivo_narrow_semibold
),但是在font-family
中具有fontWeight
属性的意义是什么?
I realize that I can just specify the specific font resource (i.e. R.font.archivo_narrow_semibold
), but then what is the point of having a fontWeight
attribute in the font-family
?
新的静态 create(Typeface family, int weight, boolean italic)
方法是在API级别28中添加的,以及 getWeight()
实例方法.最终,这使得可以使用Java代码中的fontWeight
属性.尽管仅适用于API级别28及以上,但我在支持库中找不到任何类似物.
A new static create(Typeface family, int weight, boolean italic)
method was added in API Level 28, along with a getWeight()
instance method. This finally makes it possible to make use of the fontWeight
attribute in Java code; though only for API Level 28 and above, I haven't found any analogs in the support library.
这很有用-并且表明fontWeight
属性过去没有任何作用-但我真的很希望能够在XML样式中使用权重.
This is useful—and shows that the fontWeight
attribute didn't serve any purpose in the past—but I would really like to be able to use the weight in XML styling.
推荐答案
@FlorianWalther指出, TextView.textFontWeight
属性正是我想要的.此属性显然是在API级别28中添加的,但是直到最近才被记录.
As pointed out by @FlorianWalther, the TextView.textFontWeight
attribute is exactly what I was looking for. This attribute was apparently added in API level 28, but was not documented until recently.
确保所有权重都在同一个XML文件中(就像在我的问题中一样),然后只需将属性与fontFamily
属性一起使用.
Make sure all of the weights are in the same XML file (as in my question), then simply use the attribute along with the fontFamily
attribute.
<TextView android:id="@+id/weightedTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_narrow"
android:textFontWeight="700"/>
据我所知,此属性仅在以上API级别28中可用,如果在支持库中找到对应的属性,我将进行更新.
As far as I am aware this attribute is only available in API Level 28 an above, I will update if I find its counterpart in the support library.
这篇关于如何对XML中的字体使用指定的权重的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!