我想将资产文件夹中的字体加载到我的字体资源xml文件中
事实上,我想要类似@asset的东西来加载它。
font-family1.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="@asset/fontOne/a" />
<font
android:fontStyle="italic"
android:fontWeight="400"
android:font="@asset/fontOne/a_italic" />
</font-family>
答案 0 :(得分:2)
您需要将.ttf
个文件放在资产文件夹的子文件夹中,然后才能加载它们,但我建议您使用Calligraphy,因为它会使一切变得更加轻松和整洁。
答案 1 :(得分:1)
如果要将字体设置为所有文本,请使用caligraphy库。
而且,如果要将字体设置为特定文本,请改用TypeFace
。
答案 2 :(得分:1)
您可以构建自己的字体类
final class FontsOverride {
static void setDefaultFont(Context context,
String staticTypefaceFieldName, String fontAssetName) {
final Typeface regular = Typeface.createFromAsset(context.getAssets(),
fontAssetName);
replaceFont(staticTypefaceFieldName, regular);
}
private static void replaceFont(String staticTypefaceFieldName,
final Typeface newTypeface) {
try {
final Field staticField = Typeface.class
.getDeclaredField(staticTypefaceFieldName);
staticField.setAccessible(true);
staticField.set(null, newTypeface);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
并在您的Application
Class
@Override
public void onCreate() {
super.onCreate();
FontsOverride.setDefaultFont(this, "SERIF", "fontOne/a.ttf");
}
展现您的风格
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:textColorHint">@color/main_color</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:typeface">serif</item>
</style>