不同语言的字体资源

时间:2018-08-26 09:10:21

标签: android locale android-resources android-fonts

我试图使用字体资源目录并在xml文件中使用不同的字体,以便优先使用它们。我读过此thread,但无法解决问题。我正在使用支持库v27,我知道它支持res中的字体而不是素材资源文件夹。每当我更改应用程序的语言时,它仅使用位于font-fa-rIR文件夹中的字体。我希望应用程序分别对不同类型的语言使用不同的字体。我已经附上了应用程序res目录中的图像。我的问题在哪里?我该如何解决?预先感谢。

preference_button.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="8dp">

    <TextView
        android:id="@android:id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/font_1" />

    <TextView
        android:id="@+id/summary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/font_1" />

</LinearLayout>

Font resource directory

Effect of font on English language, as you can see the numbers are still in Farsi which means it uses Farsi font

Effect of font on Farsi language

1 个答案:

答案 0 :(得分:1)

这可能会帮助您

参考:Chnaging Locale It self

Locale locale2 = new Locale("fr"); 
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(
    config2, getBaseContext().getResources().getDisplayMetrics());

Res字体

TextView tv_the = (TextView) findViewById(R.id.the);
Typeface face = Typeface.createFromAsset(getAssets(), "font.ttf");
tv_the.setTypeface(face);

有关更多信息:How to set custom font in .xml file instead of .java file?