【问题标题】:Multilingual Not working For Date Picker Android多语言不适用于日期选择器 Android
【发布时间】:2019-05-22 05:02:47
【问题描述】:

我们在更改 Android 应用的语言环境时遇到了日期选择器的一些问题。任何人都可以帮助我。

当我们更改 Device Francia(Canada) 的语言时,应用程序可以正常使用此代码

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        Locale.setDefault(resources.configuration.locales.get(0))
    }else{
        Locale.setDefault(resources.configuration.locale)
    }

但是如果我们更改应用程序的区域设置而不更改设备语言设置会得到不正确的结果。

var locale=Locale(SharedPreferencesManager.getStringPreference(Constants.LOCALE, ""))
    Locale.setDefault(locale)
    val resources = resources
    val configuration = resources.configuration
    val displayMetrics = resources.displayMetrics

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        configuration.setLocale(locale)
        createConfigurationContext(configuration)
    } else {
        configuration.locale=locale
        resources.updateConfiguration(configuration, displayMetrics)
    }

Correct View

Incorrect View(Cancel and OK button not change as per app locale )

【问题讨论】:

  • 什么是“不正确的结果”,预期的结果是什么?
  • 完整的 Android Material DatePickerDialog 的语言不会改变。
  • 预期结果:完整的日期选择器应代表 App Locale 进行更改

标签: android kotlin


【解决方案1】:

根据 Android 框架上的http://code.google.com/p/android/issues/detail?id=25107 错误报告,日期选择器未使用应用上下文的缩短月份的字符串数组。相反,它使用系统区域设置。

您可以使用 Gilbertwat 编写的AppLocaleDatePickerDialog.java

【讨论】:

  • AppLocaleDatePickerDialog.java 是 8 年前创建的。问题真的一直持续到今天吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2019-04-19
  • 1970-01-01
相关资源
最近更新 更多