首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 切換語言導致視圖縮放異常:封裝 setDefaultLocale 方法統一設定

     編輯:程式設計綜合問答

切換語言時直接修改 Configuration 可能導致部分裝置佈局縮放異常。封裝統一設定方法,正確更新 DisplayMetrics。

封裝方法

public static void setDefaultLocale(Context context, String languageCode) {
    Locale locale = new Locale(languageCode);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}

使用方式

// 切換至中文
setDefaultLocale(getApplicationContext(), "zh");
startActivity(new Intent(this, MainActivity.class));
finish(); // 重啟當前 Activity 生效

完整語言切換邏輯

private void switchLanguage(int lang) {
    String code;
    switch (lang) {
        case 1: code = "es"; break; // 西班牙文
        case 2: code = "en"; break; // 英文
        default: code = "zh"; break; // 中文
    }
    setDefaultLocale(getApplicationContext(), code);
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
    finish();
}

注意

  • 語言切換需重啟 Activity(recreate() 或 finish()+startActivity)。
  • 使用 Configuration 新實例而非修改系統配置,避免副作用。
  • API 17+ (Jelly Bean MR1) 以上建議使用 createConfigurationContext。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved