如何更改应用内的显示语言?我希望具有不同文化背景的用户可以使用一台扫描仪,而无需更改设备的全局文化。
我有一个带有点击事件的laguage按钮,我称之为方法:
public void SetLocale(string language = "")
{
Locale locale = String.IsNullOrEmpty(language)
? new Locale("de-DE")
: new Locale(language);
Locale.Default = locale;
var config = new global::Android.Content.Res.Configuration();
config.Locale = locale;
var context = global::Android.App.Application.Context;
context.Resources.UpdateConfiguration(config, context.Resources.DisplayMetrics);
}
但遗憾的是,当我按下按钮时没有任何反应。
点击事件是:
_btnen.Click += delegate
{
SetLocale("en-GB");
};
答案 0 :(得分:3)
如果可以忘记上下文(所有属性值都可能丢失),什么对您有用?您可以强制Activity
重绘自身。
btn.Click += delegate
{
SetLocale("en-GB");
this.Recreate(); //this line
}
答案 1 :(得分:2)
在@Rafael Stahl的帮助下,我找到了以下解决方案:
_btnen.Click += delegate
{
Java.Util.Locale.Default = new Locale("en", "GB");
Resources.Configuration.Locale = Java.Util.Locale.Default;
Resources.UpdateConfiguration(Resources.Configuration, Resources.DisplayMetrics);
Intent intent = new Intent(this, this.Class);
StartActivity(intent);
};