如何根据语言在单个TextView上应用多个TypeFace?

时间:2017-12-31 13:42:33

标签: android fonts textview android-typeface

我有一个TextView,有两种语言:阿拉伯语和英语。

我有两种不同的字体,arabic.ttfenglish.ttf

我想将这两种字体应用于单个TextView,它应该根据语言更改字体。

对于阿拉伯语,只应用arabic.ttf,并且应该应用英语english.ttf。

问题是它们都在同一个TextView中,因此我无法应用两种字体。

我查看了SpannableStringBuilder的示例,但没有帮助。

请提供工作代码。

3 个答案:

答案 0 :(得分:2)

实现目标的最简单方法:

创建2个文件夹:

  • RES /字体烯
  • RES /字体-AR

将英文字体文件放在-en文件夹和阿拉伯语字体文件中-ar文件夹中。

重命名文件,以便在每个文件夹中具有相同的名称,例如

textViewFont.ttf

在TextView中添加android:fontFamily="@font/textViewFont"

这样,当您的应用程序打开时,XML框架将根据当前的Locale

加载字体

答案 1 :(得分:0)

您必须将自定义字体字体扩展到TypeFaceSpan,并使用SpannableString来帮助您修复此问题。链接https://stackoverflow.com/a/9619371/8208341帮助了我。

还将textview文本拆分为字符串数组,然后循环以应用上面创建的方法。

答案 2 :(得分:0)

如何在style-ar.xml中创建新样式values-ar

<style name="my_arbic_style">
    <item name="android:textSize">18sp</item>
    <item name="android:fontFamily">sans-serif-thin</item>
</style>

并在您的布局中:

<TextView
    android:text="khaled djeriou"
    android:textColor="@color/white"
    android:gravity="center_vertical`
    app:theme="@style/my_arbic_style"/>

我希望这项工作