我为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部分! 你能帮我吗??谢谢!!
答案 0 :(得分:3)
使用英文版(和所有其他语言)的'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有更深入的答案。