有没有办法为每种语言使用不同的字体?有values-en,values-fr.等,但我们可以做一些像font-fr,font-ar.等?PS,我说的是res/font,不是assets/fonts。我希望能够在XML中设置一种字体,然后获得每种语言的更改,而无需以编程方式设置字体。
bksxznpy1#
试试这个:1.在res/font中添加所有字体文件1.本地化style.xml(创建values/style.xml和values-ln/style.xml)1.在AppTheme中,对于每个style.xml,添加<item name="android:fontFamily">@font/your_desired_font</item>1.仅此而已如果一种语言有多个字体(比如常规字体、粗体字体、浅色字体等),那么将其添加到每个style.xml中,例如:
res/font
style.xml
values/style.xml
values-ln/style.xml
AppTheme
<item name="android:fontFamily">@font/your_desired_font</item>
<style name="FontLocalizedBold"> <item name="android:fontFamily">@font/your_desired_font</item> </style>
<style name="FontLocalizedBold">
</style>
字符串使用方法:
<TextView android:id="@+id/textViewId" android:layout_width="100dp" android:layout_height="100dp" style="@style/FontLocalizedBold" android:gravity="center" tools:text="XX"/>
<TextView
android:id="@+id/textViewId"
android:layout_width="100dp"
android:layout_height="100dp"
style="@style/FontLocalizedBold"
android:gravity="center"
tools:text="XX"/>
型
8cdiaqws2#
这是可能的。1.将您的本地化otf文件放在您的字体文件夹中(未本地化)1.在本地化值文件夹(values-fr)中复制styles.xml,不使用<item name="android:fontFamily">@font/app_font</item>进行任何更改。1.创建本地化字体文件夹(font-fr)。1.在新的字体文件夹中,使用android:font="@font/your_localized_otf_file"创建app_font.xml您的本地化字体文件夹将被本地化值文件夹中的本地化样式文件使用。但otf/ttf文件应位于常规字体文件夹中。
<item name="android:fontFamily">@font/app_font</item>
android:font="@font/your_localized_otf_file"
更新:
上面的答案只是利用font-xx文件夹(在问题中要求),但由于我们使用本地化的styles.xml,因此有一个更简单的解决方案,没有font-xx文件夹。1.把你的本地化的otf文件放在你的字体文件夹中1.使用android:font="@font/your_localized_otf_file"在字体文件夹中创建different_language_font. xml1.在本地化值文件夹(values-fr)中的styles.xml中<item name="android:fontFamily">@font/different_language_font</item>
<item name="android:fontFamily">@font/different_language_font</item>
unhi4e5o3#
首先,你需要创建字体目录:1-右键单击res文件夹,然后转到新建> Android资源目录。出现新建资源目录窗口。2-在资源类型>中选择字体,然后单击确定。3-注意:资源目录的名称必须是font。4-将字体文件添加到font文件夹中(无论是otf还是ttf)5-右键单击res \ font文件夹>新建>字体资源文件6-阿拉伯语。7-将此代码复制到创建的文件中。
<?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"><!-- regular --><font android:font="@font/ArabicFont" android:fontStyle="normal" android:fontWeight="400" app:font="@font/ArabicFont" app:fontStyle="normal" app:fontWeight="400" /><!-- bold --><font android:font="@font/ArabicFont" android:fontStyle="normal" android:fontWeight="700" app:font="@font/ArabicFont" app:fontStyle="normal" app:fontWeight="700" /></font-family>
<?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">
<!-- regular -->
<font
android:font="@font/ArabicFont"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/ArabicFont"
app:fontStyle="normal"
app:fontWeight="400" />
<!-- bold -->
android:fontWeight="700"
app:fontWeight="700" />
</font-family>
字符串8-重复步骤#5并将文件重命名为“english”。然后将以下代码复制到其中:
<?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"><!-- regular --><font android:font="@font/EnglishFont" android:fontStyle="normal" android:fontWeight="400" app:font="@font/EnglishFont" app:fontStyle="normal" app:fontWeight="400" /><!-- bold --><font android:font="@font/EnglishFont" android:fontStyle="normal" android:fontWeight="700" app:font="@font/EnglishFont" app:fontStyle="normal" app:fontWeight="700" /></font-family>
android:font="@font/EnglishFont"
app:font="@font/EnglishFont"
型9-为res/values/styles.xml中的每种语言创建新的locale文件(右键单击>新建>值资源文件>写入样式)。注意,您必须从“可用限定符”中选择“Locale”>单击按钮“>>”然后选择您的语言>然后单击确定。“您应该会看到新的styles.xml(ar)”10-将styles.xml的所有默认生成内容复制并粘贴到创建的styles.xml“ex. styles.xml(ar)and styles.xml(en)”中11-转到styles.xml(en)并在style标签中添加这一xml行
<item name="fontFamily">@font/english</item>
型12-现在重复并转到styles.xml(ar),并在style标签中添加这一xml行
<item name="fontFamily">@font/arabic</item>
型13-现在运行并查看更改区域设置后的不同情况。14-享受阿尔塔
fumotvh34#
您可以为每个本地化设置不同的styles.xml文件,并在每个样式文件下定义fontFamily。要声明字体家族,你可以创建一个xml文件,如下所示,你可以引用otf或ttf文件。您可以在font目录下创建.xml文件,并在其中定义所有字体。
<!-- bukra.xml file which contains all the font families --><?xml version="1.0" encoding="utf-8"?><font-family xmlns:android="http://schemas.android.com/apk/res/android"><font android:font="@font/bukra_semi_condensed_extra_light_normal" android:fontStyle="normal" /><font android:font="@font/bukra_semi_condense_light_slanted" android:fontStyle="italic" /></font-family>
<!-- bukra.xml file which contains all the font families -->
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
android:font="@font/bukra_semi_condensed_extra_light_normal"
android:fontStyle="normal" />
android:font="@font/bukra_semi_condense_light_slanted"
android:fontStyle="italic" />
字符串并基于本地化为您的应用程序定义两种不同的字体,如下所示。这个styles.xml文件在我的values-ar文件下。
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimary</item> <item name="colorAccent">@color/colorAccent</item> <item name="fontFamily">@font/bukra</item> </style>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="fontFamily">@font/bukra</item>
wwwo4jvm5#
我使用了@ghita解决方案。然而,在我的情况下,因为我想在通用样式中也有textSize,lineHeight,fontWeight和textColor,所以我把字体家族放在不同的文件中(即“font_families.xml”)。这是我的文件如何寻找一个区域设置:
<?xml version="1.0" encoding="utf-8"?><resources> <item name="regular" type="font">@font/alegreya_sans_regular</item> <item name="medium" type="font">@font/alegreya_sans_medium</item> <item name="semi_bold" type="font">@font/alegreya_sans_bold</item> <item name="wide_medium" type="font">@font/alegreya_sans_medium</item> <item name="wide_regular" type="font">@font/alegreya_sans_regular</item></resources>
<resources>
<item name="regular" type="font">@font/alegreya_sans_regular</item>
<item name="medium" type="font">@font/alegreya_sans_medium</item>
<item name="semi_bold" type="font">@font/alegreya_sans_bold</item>
<item name="wide_medium" type="font">@font/alegreya_sans_medium</item>
<item name="wide_regular" type="font">@font/alegreya_sans_regular</item>
</resources>
字符串之后,我在themes.xml文件中引用它们,即:
<style name="LargeTitleMedium" parent="TextAppearance.AppCompat.Title"> <item name="android:textSize">40sp</item> <item name="lineHeight">48sp</item> <item name="android:fontFamily">@font/wide_medium</item> <item name="fontWeight">500</item> <item name="android:textColor">@color/neutral_10</item> </style>
<style name="LargeTitleMedium" parent="TextAppearance.AppCompat.Title">
<item name="android:textSize">40sp</item>
<item name="lineHeight">48sp</item>
<item name="android:fontFamily">@font/wide_medium</item>
<item name="fontWeight">500</item>
<item name="android:textColor">@color/neutral_10</item>
5条答案
按热度按时间bksxznpy1#
试试这个:
1.在
res/font
中添加所有字体文件1.本地化
style.xml
(创建values/style.xml
和values-ln/style.xml
)1.在
AppTheme
中,对于每个style.xml
,添加<item name="android:fontFamily">@font/your_desired_font</item>
1.仅此而已
如果一种语言有多个字体(比如常规字体、粗体字体、浅色字体等),那么将其添加到每个style.xml中,例如:
字符串
使用方法:
型
8cdiaqws2#
这是可能的。
1.将您的本地化otf文件放在您的字体文件夹中(未本地化)
1.在本地化值文件夹(values-fr)中复制styles.xml,不使用
<item name="android:fontFamily">@font/app_font</item>
进行任何更改。1.创建本地化字体文件夹(font-fr)。
1.在新的字体文件夹中,使用
android:font="@font/your_localized_otf_file"
创建app_font.xml您的本地化字体文件夹将被本地化值文件夹中的本地化样式文件使用。但otf/ttf文件应位于常规字体文件夹中。
更新:
上面的答案只是利用font-xx文件夹(在问题中要求),但由于我们使用本地化的styles.xml,因此有一个更简单的解决方案,没有font-xx文件夹。
1.把你的本地化的otf文件放在你的字体文件夹中
1.使用
android:font="@font/your_localized_otf_file"
在字体文件夹中创建different_language_font. xml1.在本地化值文件夹(values-fr)中的styles.xml中
<item name="android:fontFamily">@font/different_language_font</item>
unhi4e5o3#
首先,你需要创建字体目录:
1-右键单击res文件夹,然后转到新建> Android资源目录。出现新建资源目录窗口。
2-在资源类型>中选择字体,然后单击确定。
3-注意:资源目录的名称必须是font。
4-将字体文件添加到font文件夹中(无论是otf还是ttf)
5-右键单击res \ font文件夹>新建>字体资源文件
6-阿拉伯语。
7-将此代码复制到创建的文件中。
字符串
8-重复步骤#5并将文件重命名为“english”。然后将以下代码复制到其中:
型
9-为res/values/styles.xml中的每种语言创建新的locale文件(右键单击>新建>值资源文件>写入样式)。注意,您必须从“可用限定符”中选择“Locale”>单击按钮“>>”然后选择您的语言>然后单击确定。“您应该会看到新的styles.xml(ar)”
10-将styles.xml的所有默认生成内容复制并粘贴到创建的styles.xml“ex. styles.xml(ar)and styles.xml(en)”中
11-转到styles.xml(en)并在style标签中添加这一xml行
型
12-现在重复并转到styles.xml(ar),并在style标签中添加这一xml行
型
13-现在运行并查看更改区域设置后的不同情况。
14-享受阿尔塔
fumotvh34#
您可以为每个本地化设置不同的styles.xml文件,并在每个样式文件下定义fontFamily。
要声明字体家族,你可以创建一个xml文件,如下所示,你可以引用otf或ttf文件。
您可以在font目录下创建.xml文件,并在其中定义所有字体。
字符串
并基于本地化为您的应用程序定义两种不同的字体,如下所示。
这个styles.xml文件在我的values-ar文件下。
型
wwwo4jvm5#
我使用了@ghita解决方案。然而,在我的情况下,因为我想在通用样式中也有textSize,lineHeight,fontWeight和textColor,所以我把字体家族放在不同的文件中(即“font_families.xml”)。这是我的文件如何寻找一个区域设置:
字符串
之后,我在themes.xml文件中引用它们,即:
型