改变语言环境时改变字体?

时间:2012-07-30 12:22:56

标签: android localization fonts

我为Android制作了一个应用程序,我有两种语言(英语 - 希腊语),我希望当设备具有英语语言环境时,它具有与希腊语言不同的字体。

我用过

String loc = Locale.getDefault().getISO3Language();

获取iso3Language(eng,ell,deu ....)然后我使用if命令

if(loc=="eng"){
        Typeface font1 = Typeface.createFromAsset(getAssets(), "MISTRAL.TTF");
        txt1.setTypeface(font1);
        txt1.setText(R.string.app_name);
    }
    else{
        Typeface font1 = Typeface.createFromAsset(getAssets(), "SNAP.TTF");
        txt1.setTypeface(font1);
        txt1.setText(R.string.app_name);
    }

但它无法识别它,即使我有英语语言环境,它也执行代码的else部分! 你能帮我吗??谢谢!!

2 个答案:

答案 0 :(得分:3)

恕我直言,你的方法是错误的。这可以在resorce level上轻松完成。不需要代码行!

使用英文版(和所有其他语言)的'res / values'目录中的值创建xml文件。 在此文件中创建设置字体的新style。这或多或少看起来像这样(我这里没有SDK,所以可能会有一些错误):

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomText" parent="@style/Text">
        <item name="android:typeface">MISTRAL.TTF</item>
        <item name="android:textColor">#008</item>
    </style>
</resources>

在'res / values-el'(Greek, Modern)中创建相同的文件并在那里定义相同的样式(只需复制粘贴),但使用其他字体。

在布局文件中,您需要根据区域设置更改字体的所有位置应用此样式。 为视图设置属性“style”(它没有名称空间)。自动完成应该引导你。

答案 1 :(得分:1)

在java中,你无法使用==来比较字符串。请改用equals方法。

这个this tutorial有更深入的答案。