我在我的应用程序中支持不同的语言,并允许用户在应用程序本身内交换语言。几周前我注意到一些问题,SDK版本7的用户使用了希伯来语,因此我在版本8之前撤消了对任何内容的支持。因此我将字符串文件存储在 values-he-v8 中。但是,当我在平板电脑上换成希伯来语时,它不会改变语言(这在我的手机上运行正常)。为什么?我认为这应该是版本8以上的所有版本。更改为荷兰语(NL - 我只有一个values-nl目录)在手机上工作。这是我的changeLocale方法:
public void changeLocale(String language) {
Locale locale;
if (language.equals("default")) {
locale = Locale.getDefault();
} else {
locale = new Locale(language);
}
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
同样我注意到在我的ListView中显示分数会在我的手机上显示希伯来名字。他们仍然与他们在得分表中的排名保持一致,完全停止然后是名称。例如。 50.יניב
然而,在平板电脑上,整个字符串被推到右边并成为名称 .50
这是我用于填充ListView的ScoreArrayAdapter中的相关代码:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = activity.getLayoutInflater();
View rowView = inflater.inflate(layoutRow, null, true);
TextView name = (TextView) rowView.findViewById(R.id.TextView_PlayerName);
name.setText(values.get(position).rank.toString() + ". "
+ values.get(position).playerName);
...
我现在已经通过为排名和玩家名称创建单独的文本视图来解决第二个问题(尽管从技术上讲,这可能现在已经落后于以色列读者)。但我仍然不知道为什么我的文件应该适用于所有SDK 8+并不适用于我的v3.1平板电脑。