Android 不重启切换语言

2,457 阅读1分钟

实现多语言的方式

1.新建一个values-en文件夹,把values文件夹里面的strings.xml复制过来,把里面的中文替换成英文

2.在一个项目中通常会有一个BaseActivityonCreate中进行语言切换的操作

private fun setLanguage() {
        // 这里在本地存储了语言的设置
        val isEnglish = MMKVUtil.getBoolean(MkvConstants.LANGUAGE_TYPE, false)
        val resource = resources
        val metrics = resource.displayMetrics
        val config = resource.configuration
        config.setLocale(if (isEnglish) Locale.ENGLISH else Locale.SIMPLIFIED_CHINESE)
        resource.updateConfiguration(config, metrics)
    }

3.在项目中的首页如MainActivity,一般设置的启动模式都为singleTask。所以在设置完成后直接跳转到MainActivity中即可,个人觉得这样比在onResume中重新设置语言要好很多。

4.但是这样会发现一个问题就是MainActivity中如果存在底部tab菜单和fragment里面的文字语言并不会改变。这时只需在onNewIntent里面设置recreate()即可解决