首页 > 解决方案 > 如何使用 Kotlin 在 android 应用程序中支持包括 RtL 在内的多语言?

问题描述

private fun setLocale(lang: String) {
        val language = Locale(lang)
        val res: Resources = resources
        val dm: DisplayMetrics = res.displayMetrics
        val conf: Configuration = res.configuration
        conf.locale = language
        res.updateConfiguration(conf, dm)
        val refresh = Intent(this, LoginActivity::class.java)
        startActivity(refresh)
        finish()
    }

大家好!

我正在创建一个 android 应用程序,这是为阿拉伯人准备的。我已经为 "en" 和 "ar" xml创建了字符串资源,并在 Mainfest.xml 中声明了它android:supportsRtl="true"

当我使用此代码转换应用程序语言时,它只转换文本。无需转换布局方向文本方向文本对齐方式

  1. 此代码包含.locale.updateConfiguration作为 java 代码。您能帮我如何清理整个代码以 适合kotlin 代码吗?
  2. 你能帮我解决 RtL 问题,使应用程序更专业和准确吗?

这是证明问题的附件。 显示了实现代码时会发生什么。 反对当我改变语言设备时

标签: androidkotlinlocalrtl-language

解决方案


要使布局更改方向遵循语言添加:

  • setLayoutDirection()从 Viewwindow.decorView

  • setLayoutDirection()从配置res.configuration

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
         res.configuration.setLayoutDirection(language)
         window.decorView.layoutDirection = if (rtl) View.LAYOUT_DIRECTION_RTL else View.LAYOUT_DIRECTION_LTR
     }
    

在上面的代码片段中,请确保替换if(rtl)为 RTL 条件,例如if (language == "ar")

您可以在活动中调用此代码onCreate(),也可以在您的setLocale()方法中对其进行测试


推荐阅读