最近公司的一个项目中,app是有中文和英文两种版本的,但是之后客户要求只要英文,不要中文了,而且要将英文设置为默认语言,一开始不知道怎么做,就在网上找了很久的资料,没找到太好的答案,最后找到一篇文章,按照文章中的方法试了一下,果然有效,步骤也很简单,就3步:
1.写一个类继承Application,在onCreate方法中设置默认语言:
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = getResources().getConfiguration();
DisplayMetrics metrics = getResources().getDisplayMetrics();
config.locale = Locale.ENGLISH;
getResources().updateConfiguration(config, metrics);
你需哪种语言就将languageToLoad设置为相应的简写即可
2.在AndroidManifest文件中,application标签下设置android:configChanges="locale"属性
3.加权限:
4.但是用了这种方法后我试着切换了下中英文和其他语言,结果就变回中文了,具体的现象是:当我第一次进入时是英文这没问题,此时我到设置界面切还语言为英文时从多任务中再次进入还是英文没问题,但是我再次切换成中文或者其他语言时,就会自动变成中文了,找了很多方法都没解决。最后我的解决办法是:将第一次设置的语言用SP保存,然后在Activity的基类BaseActivity中取出保存的语言再次设置,这样继承BaseActivity的所有Activity就会自动强制设置为英文了,这次终于解决这个问题了!!!
工具类中的设置语言的方法:
public static void setdefaultLanguage(Context context,String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = context.getResources().getConfiguration();
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
config.locale = Locale.ENGLISH;
context.getResources().updateConfiguration(config, metrics);
SpUtils.saveString(context,"language",language);
}
在MainActivity的onCreate方法中调用该方法设置为英文:
LanguageUtils.setdefaultLanguage(this,"en");
在BaseActivity中的onCreate方法中再次设置语言:
LanguageUtils.setdefaultLanguage(getApplicationContext(),SpUtils.getSpString(getApplicationContext(),"language"));
ok了,这样就可以将app设置为指定语言了,无论设置中是什么语言你的app都是英文,即使重启手机也不会变中文,感谢作者给的解决方法!希望能对大家有帮助
转载出处:https://blog.csdn.net/tangcheng_ok/article/details/7483993