アプリでスペイン語、ポルトガル語、英語の3つの言語をサポートする必要があります。アプリで言語を選択するオプションを提供します。
1)3つの描画可能なフォルダーdrawable-es、drawable-pt、drawable。
2)言語に従って3つの値のフォルダーvalues-es、values-pt、values.Change String.xml値。
言語を選択するためのimageViewがあります。クリックすると、英語、スペイン語、ポルトガル語のオプションで構成されるメニューが開きます。
このコードによるオプション選択でアプリ内のロケールを設定しました
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.en:
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in English !", Toast.LENGTH_LONG).show();
break;
case R.id.pt:
Locale locale2 = new Locale("pt");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Portugal !", Toast.LENGTH_LONG).show();
break;
case R.id.es:
Locale locale3 = new Locale("es");
Locale.setDefault(locale3);
Configuration config3 = new Configuration();
config3.locale = locale3;
getBaseContext().getResources().updateConfiguration(config3, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Spain !", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
私はマニフェストで宣言しました -android:configChanges = "locale"
動作しますが、問題があります。
問題:-
1)言語を選択すると、言語選択の画像からなる画面は変更されず、他の画面が変更されます。
2)方向変更後、アプリは電話のロケールに応じて言語を復元します。
android:configChanges="locale"
てください。AndroidManifest.xml内のアクティビティ