【问题标题】:Differents fonts when i change locale?更改语言环境时使用不同的字体?
【发布时间】:2012-07-28 02:53:17
【问题描述】:

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

【问题讨论】:

    标签: android localization fonts


    【解决方案1】:

    恕我直言,您的方法是错误的。这可以在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) 中创建相同的文件并在那里定义相同的样式(只需复制粘贴)但使用其他字体。

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

    【讨论】:

    • 我很确定你不能在styles.xml中突然使用MISTRAL.TTF
    • 显然你是对的。我没有时间验证这一点。至少这适用于自定义字体。 stackoverflow.com/a/6746775/1387438 有解决方法最坏的情况我会在 xml 中使用自定义值并在代码中使用此值,但链接的解决方案看起来更好。
    【解决方案2】:

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

    此this tutorial 以获得更深入的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多