我想更改应用程序的语言,这在 API 26 之前可以正常工作。
对于 api > 25,我将 Locale.setDefault(Locale.Category.DISPLAY, mynewlanglocale);
放在 setContentView(R.layout.activity_main);
之前,但没有任何变化。
docs这个不用过多解释。
最佳答案
我遇到了同样的问题:由于 Android 8.0+,我的应用程序的某些部分不再更改它们的语言。更新应用程序和 Activity 上下文对我有帮助。下面是 MainActivity 函数的一个例子:
private void setApplicationLanguage(String newLanguage) {
Resources activityRes = getResources();
Configuration activityConf = activityRes.getConfiguration();
Locale newLocale = new Locale(newLanguage);
activityConf.setLocale(newLocale);
activityRes.updateConfiguration(activityConf, activityRes.getDisplayMetrics());
Resources applicationRes = getApplicationContext().getResources();
Configuration applicationConf = applicationRes.getConfiguration();
applicationConf.setLocale(newLocale);
applicationRes.updateConfiguration(applicationConf,
applicationRes.getDisplayMetrics());
}
关于java - 如何更改 Android O/Oreo/api 26 应用程序语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47165311/