我有一个应用程序,其中我有一个名为“Crilee”的字体,它在其他设备中运行完美,但在android中没有Oreo版本。我使用settypeface()
来设置字体。我能否知道Oreo版本以及某些设备中不支持某些字体的原因?
答案 0 :(得分:2)
Android 8.0(API级别26)引入了一项新功能Fonts in XML,可让您将字体用作资源。
将字体文件添加到 res 目录下的 font 文件夹中。
然后,在 font 文件夹下创建一个字体系列xml文件
将每个字体文件,样式和权重属性包含在<font>
元素中,如下例所示。
<?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布局中使用字体
在布局XML文件中,将fontFamily
属性设置为您要访问的字体文件。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/lobster"/>
以编程方式使用字体
要以编程方式检索字体,请调用getFont(int)
方法并提供要检索的字体的资源标识符。
Typeface typeface = getResources().getFont(R.font.myfont);
textView.setTypeface(typeface);
注意:要在运行 Android 4.1(API级别16)及更高级别,use the Support Library 26的设备上使用字体XML功能。
答案 1 :(得分:1)
我遇到了完全相同的问题,并修复了将ttf文件上传到https://everythingfonts.com/font-face并使用此网站使用生成的ttf文件的问题。 它神奇地工作。如果有人对转换的类型有更多的了解,那么可以分享。