Android旋轉屏幕後國際化語言失效的解決的方法
阿新 • • 發佈:2017-06-16
padding lang label orien resource oca auto 切換 overflow
本文已同步至個人博客:liyuyu.cn
2.改動AndroidManifest.xml文件。application節點指定為我們自己定義的FunctionApplication
至此。旋轉屏幕後語言失效的問題就可攻克了。
近期在項目中使用到了國際化多語言(英文+中文),但在使用時發現了一個問題。當屏幕旋轉後。APP語言(中文)自己主動轉換為了系統語言(英文)。設置了Activity的android:configChanges="orientation|screenSize"屬性也無效。於是求助Stackoverflow,你懂的,最後問題攻克了。於是整理了此文以作參考。
1.新建FunctionApplication類繼承Application。覆寫onConfigurationChanged。代碼例如以下:
public class FunctionApplication extends Application{ @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); toChinese(); } public void toChinese() { String languageToLoad = "zh"; Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config = getResources().getConfiguration(); DisplayMetrics metrics = getResources().getDisplayMetrics(); config.locale = Locale.SIMPLIFIED_CHINESE; getResources().updateConfiguration(config, metrics); } }
<application android:name="com.xxx.xxxx.FunctionApplication" android:allowBackup="true" android:configChanges="orientation|screenSize|locale" android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/AppTheme" >
查閱了相關資料。發如今屏幕旋轉時觸發onConfigurationChanged(Configuration
newConfig)方法時。這個newConfig取的是系統的,這就是為什麽語言會切換到系統語言的原因。所以在這裏我們再次設定下locale就能夠了。
Android旋轉屏幕後國際化語言失效的解決的方法