多语种不适用于Android的日期选择器

时间:2019-05-22 05:02:48

标签: android kotlin

更改Android App的区域设置时,日期选择器存在一些问题。任何人都可以帮助我。

当我们更改Device Francia(加拿大)的语言时,应用可以使用此代码正常运行

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 )

1 个答案:

答案 0 :(得分:0)

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

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