我正在创建一个支持印地语和古吉拉特语的应用程序。我正在从应用程序设置屏幕设置应用程序语言。比如我给了用户选择英语/印地语/古吉拉特语的选项。
我在单选按钮选择的基础上设置Locale。我在持久性中保存选择,在此基础上我改变了应用程序中所有textview的字体。
一切正常工作..但它在应用程序运行之间将语言更改为英语。假设我从我的设置屏幕中选择了印地语并运行我的应用程序。在10-15分钟后突然从“值”目录中获取文本值,而不是从“values-hi”中获取文本值。我真的不明白为什么它从默认值目录。我的应用程序动态数据工作正常。它进入印地文甚至我的应用程序drawables也工作正常,但问题只是它从“值”目录中获取值。
当用户从我的APP设置屏幕中选择语言时使用此方法。
public void setLocale(Context context, String lang) {
Locale myLocale = new Locale(lang);
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
这种方法用于在ONGREATE方法中设置TEXTVIEW的面板
public static void setTypeface(TextView textView, Context context) {
SharedPreferences sp = context.getSharedPreferences("language_selection", context.MODE_PRIVATE);
String language = sp.getString("language", "English");
if (language != null) {
if (language.equalsIgnoreCase("Hindi")) {
textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "gargi.ttf"));
}
if (language.equalsIgnoreCase("Gujrati")) {
textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "SHRUTI.TTF"));
}
}
}
答案 0 :(得分:1)
尝试以这种方式设置您选择的Language
:
Locale locale = new Locale("YourSelectedLang");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());