【问题标题】:Android: Drawer items doesnt change title when language is changedAndroid:更改语言时抽屉项目不会更改标题
【发布时间】:2021-08-26 06:15:51
【问题描述】:

我为英语和罗马尼亚语实现了一些字符串资源。切换区域设置适用于文本字段,但更改语言时抽屉项目的标题不会更改。

我有以下配置:

在 MainActivity 中将语言环境设置为“ro”

    private fun setDefaultLocale(lang: String) {
        val config = android.content.res.Configuration(resources.configuration)
        val locale = Locale(lang)
        Locale.setDefault(locale)
        config.setLocale(locale)
        config.setLayoutDirection(locale)

        resources.updateConfiguration(config, resources.displayMetrics)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_activity)
        setDefaultLocale("ro")
..... 
}

菜单资源:

<group android:checkableBehavior="single">
    <item
        android:icon="@drawable/ic_baseline_home_24"
        android:id="@+id/home"
        android:title="@string/menu_home" />

    <item
        android:icon="@drawable/ic_baseline_wallpaper_24"
        android:id="@+id/news"
        android:title="@string/menu_news" />

    <item
        android:icon="@drawable/ic_jungle"
        android:id="@+id/jungleTimer"
        android:title="@string/menu_timer" />

    <item
        android:icon="@drawable/ic_damage"
        android:id="@+id/builds"
        android:title="@string/menu_builds" />

    <item
        android:icon="@drawable/ic_baseline_settings_24"
        android:id="@+id/settings"
        android:title="@string/menu_settings" />

    <item
        android:icon="@drawable/ic_baseline_info_24"
        android:id="@+id/about"
        android:title="@string/menu_about" />

    <item
        android:icon="@drawable/ic_feedback"
        android:id="@+id/feedback"
        android:title="@string/menu_feedback" />

    <item
        android:icon="@drawable/ic_favorite"
        android:id="@+id/rateapp"
        android:title="@string/menu_rate" />
</group>

默认字符串xml文件:

/* Menu translations */
<string name="menu_home">Home</string>
<string name="menu_news">News</string>
<string name="menu_timer">Jungle Timers</string>
<string name="menu_builds">Guides</string>
<string name="menu_settings">Settings</string>
<string name="menu_about">About</string>
<string name="menu_feedback">Feedback</string>
<string name="menu_rate">Rate the app</string>

罗马尼亚语字符串 xml 文件

/* Menu translations */
<string name="menu_home">Acasă</string>
<string name="menu_news">Noutăți</string>
<string name="menu_timer">Cronometru Junglă</string>
<string name="menu_builds">Ghid Campioni</string>
<string name="menu_settings">Setări</string>
<string name="menu_about">Despre</string>
<string name="menu_feedback">Feedback</string>
<string name="menu_rate">Dă-ne o notă</string>

【问题讨论】:

  • 在系统设置中更改语言时是否也会发生同样的情况?
  • 更改设备语言确实会更改抽屉语言:D
  • 如果是这样,我认为这是您以编程方式更改 Activity 时没有重新启动的问题。
  • 我已将此作为答案发布 - 如果它确实有用,请接受它

标签: android android-studio


【解决方案1】:

更新配置不会重新启动您的活动,因此Drawer 不会知道您更改了设备上的区域设置,因此不会更改文本。 如果您在系统设置中更改语言,它应该可以工作。

我建议在您以编程方式更改配置后重新创建活动,例如使用activity?.recreate() 方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多