当我更改应用程序的区域设置时,每个TextView
都会更改语言,但导航栏项不会更改语言。
我用过
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
drawerView.invalidate();
supportInvalidateOptionsMenu();
}
区域设置更改后,语言更改仍未反映在导航抽屉中。
但当我重新启动Activity时,语言更改会反映在Navigation Drawer中。
如何在更改区域设置后立即更改导航抽屉项目中的语言?
3条答案
按热度按时间h79rfbju1#
你需要重新加载应用的资源才能更改语言。在更改语言之前为所有基于文本的资源加载的资源都是以前的区域设置。现在,你需要在更改语言之后使用不同区域设置的资源。
所以,要做的就是刷新你的整个activity,因为,不仅需要不同的资源,而且,不同语言的文本可能有不同的长度和跨度,所以,需要全新的重新渲染,(否则,文本将溢出到其他ui元素,而不进行调整)。
我将在这里发布完整的代码,刷新语言变化的活动,一切都改变到不同的地区,包括导航抽屉项目。
代码
src/java/com/pabhinav/testapp/MainActivity.java
src/res/layout/activity_main.xml
src/res/layout/app_bar_main.xml
src/res/layout/content_main.xml
src/res/layout/nav_main_header.xml
src/res/menu/activity_main_drawer.xml
src/res/menu/main.xml
src/res/values/strings.xml
src/res/values-hi/strings.xml
src/AndroidManifest.xml
上面的一切我都测试过了,效果很好。
希望能有所帮助!
4sup72z82#
只需将此代码放在活动中的setContentView之前
kyxcudwk3#
那些正在Kotlin寻找最新解决方案的人:
升级你的appcompat版本到
1.6.0
或更高版本创建函数
然后把它当成
它将更新和刷新所有语言更改/区域设置,包括NavigationView