【Interface&navigation】XML中的字体(27)

Android 8.0(API级别26)引入了一项新功能,即XML中的字体,它允许您将字体用作资源。您可以在font文件res/font/夹中添加文件以将字体捆绑为资源。这些字体在您的R文件中编译,并在Android Studio中自动提供。您可以借助新资源类型访问字体资源font。例如,要访问字体资源,请使用@font/myfont或R.font.myfont。

要在运行Android 4.1(API级别16)及更高版本的设备上使用字体XML功能,请使用支持库26.有关使用支持库的更多信息,请参阅 使用支持库部分。

要将字体添加为资源,请在Android Studio中执行以下步骤:

右键单击res文件夹,然后转到“ 新建”>“Android资源目录”。
将出现“ 新建资源目录”窗口。

在“ 资源类型”列表中,选择“ 字体”,然后单击“ 确定”。

注意:资源目录的名称必须是 font。
【Interface&navigation】XML中的字体(27)
图1.添加字体资源目录

在字体文件夹中添加字体文件。
下面的文件夹结构生成 R.font.dancing_script,R.font.lobster和 R.font.typo_graphica。
【Interface&navigation】XML中的字体(27)
图2.在资源目录中添加字体文件

双击字体文件以在编辑器中预览文件的字体。
【Interface&navigation】XML中的字体(27)
图3. 预览字体文件

创建字体系列

字体系列是一组字体文件及其样式和重量详细信息。在Android中,您可以创建一个新的字体系列作为XML资源,并将其作为单个单元访问,而不是将每个样式和权重作为单独的资源引用。通过这样做,系统可以根据您尝试使用的文本样式选择正确的字体。

要创建字体系列,请在Android Studio中执行以下步骤:
右键单击该font文件夹,然后转到“ 新建”>“字体资源文件”。将出现“ 新建资源文件”窗口。
输入文件名,然后单击“ 确定”。新的字体资源XML在编辑器中打开。
将每个字体文件,样式和权重属性包含在 <font>元素中。以下XML说明了在字体资源XML中添加与字体相关的属性:

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/lobster_regular" />
    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/lobster_italic" />
</font-family>

在XML布局中使用字体

在TextView对象或样式中使用字体,可以是单个字体文件,也可以是字体系列中的字体。要TextView在样式中添加字体,请使用该 fontFamily属性。

注意:当您使用字体系列时, TextView交换机可以根据需要自行使用该系列中的字体文件。

将字体添加到TextView

要为其设置字体TextView,请执行以下操作之一:

在布局XML文件中,将fontFamily属性设置为要访问的字体文件。

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/lobster"/>

打开“ 属性”窗口以设置其字体 TextView。
选择一个视图以打开“ 属性”窗口。
注意: “ 属性”窗口仅在设计编辑器打开时可用。选择窗口底部的“ 设计”选项卡。

展开textAppearance属性,然后从fontFamily列表中选择字体。
【Interface&navigation】XML中的字体(27)
图4. 从Properties窗口中选择字体

Android Studio布局预览(如图5最右侧窗格所示)允许您预览中的字体集TextView。
【Interface&navigation】XML中的字体(27)

图5. 在布局预览中预览字体

将字体添加到样式

打开styles.xml,并将fontFamily 属性设置为您要访问的字体文件。

<style name="customfontstyle" parent="@android:style/TextAppearance.Small">
    <item name="android:fontFamily">@font/lobster</item>
</style>

以编程方式使用字体

要以编程方式检索字体,请调用getFont(int)方法并提供要检索的字体 的资源标识符。此方法返回一个 Typeface对象。虽然系统从字体信息中为您选择最佳样式,但您可以使用该 setTypeface(android.graphics.Typeface, int) 方法设置具有特定样式的字体。
注意:在TextView 已经这样做了你。

Typeface typeface = getResources().getFont(R.font.myfont);
textView.setTypeface(typeface);

使用支持库
支持库26.0在运行Android 4.1(API级别16)及更高版本的设备上提供对XML字体功能的支持。
注意:通过支持库在XML布局中声明字体系列时,请使用app命名空间来确保加载字体。

<?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/myfont-Regular"/>
    <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" />
</font-family>

要以编程方式检索字体,请调用 ResourceCompat.getFont(Context, int)方法并提供Context和资源标识符的实例。

Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Interface&navigation】XML中的字体(27)

猜你喜欢

转载自blog.51cto.com/4789781/2147046