Android切换语言不重启应用的解决方案
2019-05-09 本文已影响16人
WaterYuan
Android切换语言不重启应用的解决方案
代码:https://github.com/WaterYuanData/Camera2New/tree/SwitchLanguage/testlanguage
- Android程序
内
多语言切换不需要重新启动的解决方案
多数给出的方案是重新启动activity或者重新setContentView,但是微信却能办到不重启又能修改语言,怎么办到的呢?
首先定义一个多语言切换支持的自定义控件,整个app涉及到多语言的布局的地方都要使用它,控件初始化的时候获取string资源id,保存string资源id,settext的时候要更新string资源id,切换语言的时候用上文所提供的代码,设置完语言后(假设设置成中文),如果重新通过string资源id设置text,那么就会显示中文文字,如果我们不主动去更新,他们就不自觉了,所以我们需要对所有的多语言支持的自定义控件进行更新,方法就是通过发送
消息给每一个activity,activity收到后,拿出自己的view,把全部子view列举一次,如果是多语言支持的自定义控件,就更新它
https://blog.csdn.net/u010499721/article/details/51260456
- Android程序
外
多语言切换不需要重新启动的解决方案
android:configChanges="locale|layoutDirection 这里同样存在一个问题,4.2之前的系统只需要设置locale,4.2+就得多设置layoutDirection这个配置,不然onConfigurationChanged依旧不会被回调。
已验证必须layoutDirection
参考:https://blog.csdn.net/q919233914/article/details/52237472