4

我为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 部分!你能帮我吗??谢谢!!

4

2 回答 2

3

恕我直言,您的方法是错误的。这可以在资源级别轻松完成。不需要任何代码行!

在“res/values”目录中为英文版(和所有其他语言)创建带有值的 xml 文件。在此文件中创建设置字体的新样式。这看起来或多或少是这样的(我这里没有 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”(希腊语、现代)中创建相同的文件并在那里定义相同的样式(只需复制粘贴)但使用其他字体。

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

于 2012-07-30T12:51:53.717 回答
1

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

教程以获得更深入的答案。

于 2012-07-30T12:25:05.077 回答