使用以下代碼是用於把應用語言環境轉換成漢語,程序在一些設備上能正常的運行,但是在另外一些設備上,它把程序中的視圖都放大了。這是為什麼呢?誰能給點建議啊?
Configuration config = getResources().getConfiguration();
Locale locale = new Locale("es", "es_ES"); // change this to a different Locale than your device
config.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics());
Log.i("onSelected..", Locale.getDefault().getCountry());
startActivity(new Intent(getApplicationContext(), HomePage.class));
finish();
當我使用不同的語言時,我使用以下方法
1)給所有支持的語言設置int型
private Language myLanguage;
public enum Language
{
Null,Spanish,English,Chinese
}
2)使用基本功能設置Default Locale
public static void setDefaultLocale(Context context,String locale)
{
Locale appLoc = new Locale(locale);
Locale.setDefault(appLoc);
Configuration appConfig = new Configuration();
appConfig.locale = appLoc;
context.getResources().updateConfiguration(appConfig, context.getResources()
.getDisplayMetrics());
}
3)使用一個函數來發布不同的語言
private void launchApplication(int language)
{
// 設置語言
switch (language)
{
case 1:
// Español
setDefaultLocale(getApplicationContext(),"es");
myLanguage = Language.Spanish;
break;
case 2:
// English
setDefaultLocale(getApplicationContext(),"en");
myLanguage = Language.English;
break;
default:
// Chinese
setDefaultLocale(getApplicationContext(),"ca");
myLanguage = Language.Chinese;
break;
}
Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, 2);
// 當從別的Activity返回時,結束當前的Activity
finish();
}
然後調用launchApplication。