1 回答

TA贡献1830条经验 获得超3个赞
我用“Chinese”,“English”和“Thailand”写了一个简单的例子,是否满足你的需求:
1.LanguageManager类,代码同上。
2. MainActivity,包括一个TextView和一个Button;
3.在BaseActivity中
public class BaseActivity: AppCompatActivity
{
protected override void AttachBaseContext(Context @base)
{
base.AttachBaseContext(LanguageManager.LoadLanguage(@base));
}
}
4.在可以设置语言的SettingActivity中,axml和你的类似
public class SettingActivity : BaseActivity, CompoundButton.IOnCheckedChangeListener
{
private Switch swCh;
private Switch swEn;
private Switch swTh;
private Bundle s;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.setting);
// Create your application here
initView();
}
private void initView()
{
Button back = FindViewById<Button>(Resource.Id.back);
back.Click += delegate { Finish(); };
swCh = FindViewById<Switch>(Resource.Id.switch1);
swEn = FindViewById<Switch>(Resource.Id.switch2);
swTh = FindViewById<Switch>(Resource.Id.switch3);
var s = GetSharedPreferences("myPreference", FileCreationMode.Private).GetString( "myLanguage", Locale.Default.Language);
switch (s)
{
case "ch":
swCh.Checked = true;
break;
case "en":
swEn.Checked = true;
break;
case "th":
swTh.Checked = true;
break;
}
swCh.SetOnCheckedChangeListener(this);
swEn.SetOnCheckedChangeListener(this);
swTh.SetOnCheckedChangeListener(this);
}
public void OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
if (isChecked)
{
switch (buttonView.Id)
{
case Resource.Id.switch1:
swEn.Checked = false;
swTh.Checked = false;
LanguageManager.ChangeLanguage(this, "ch");
break;
case Resource.Id.switch2:
swCh.Checked = false;
swTh.Checked = false;
LanguageManager.ChangeLanguage(this, "en");
break;
case Resource.Id.switch3:
swEn.Checked = false;
swCh.Checked = false;
LanguageManager.ChangeLanguage(this, "th");
break;
}
//restart application to change language
Intent intent = new Intent(this, typeof(MainActivity));
intent.SetFlags(ActivityFlags.ClearTask | ActivityFlags.NewTask);
StartActivity(intent);
}
}
}
5.创建包含每种语言的values-en , values-thstrings
a.值/字符串
<string name="change_language">改变语言</string>
<string name="setting">设置</string>
<string name="chinese">中文</string>
<string name="english">英语</string>
<string name="thailand">泰语</string>
b.values-en/字符串
<string name="change_language">change language</string>
<string name="setting">setting</string>
<string name="chinese">chinese</string>
<string name="english">english</string>
<string name="thailand">thailand</string>
c.values-th/字符串
<string name="change_language">เปลี่ยนภาษา</string>
<string name="setting">เปลี่ย</string>
<string name="chinese">ชาวจีน</string>
<string name="english">อังกฤษ</string>
<string name="thailand">ประเทศไทย</string>
ps: Text中的所有内容都要使用@string/***,并且每种语言在values/string
像这样的效果:
https://i.stack.imgur.com/JQl9X.gif
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报