更新Locale后ActionBar未同步更新的Android技术问题
解决ActionBar切换Locale后未更新的问题
方案一:重启当前Activity
调用setApplicationLocales后,重启Activity让系统重新加载本地化资源,确保所有UI元素(包括ActionBar)同步更新:
修改setNewLocale方法:
private fun setNewLocale(tags: String) { val appLocale = LocaleListCompat.forLanguageTags(tags) AppCompatDelegate.setApplicationLocales(appLocale) // 重启当前Activity,刷新所有本地化内容 recreate() }
方案二:手动更新ActionBar标题
如果不想重启Activity,可以直接获取当前语言环境下的标题文本,手动设置给ActionBar:
private fun setNewLocale(tags: String) { val appLocale = LocaleListCompat.forLanguageTags(tags) AppCompatDelegate.setApplicationLocales(appLocale) // 手动更新ActionBar标题 supportActionBar?.title = getString(R.string.app_name) }
补充说明
- 若项目中使用自定义
Toolbar而非系统默认ActionBar,直接通过Binding获取Toolbar后设置标题即可:binding.toolbar.title = getString(R.string.app_name) AppCompatDelegate.setApplicationLocales仅全局设置应用Locale,已创建的Activity不会自动刷新UI,因此需要手动触发更新或重启Activity。
内容的提问来源于stack exchange,提问作者Ahmad Rahahleh
相关产品推荐
相关产品推荐

