Moh*_*ram 8 android locale android-jetpack-compose
如何使用 android Jetpack Compose管理区域设置。compose 如何找到要在视图中设置的区域设置。
Sty*_*kis 12
androidx.compose.ui.text.intl.Locale存在,如果它满足您的需求,那就太好了,您可以Locale.current经常使用 java.util.Locale 来代替。
为此,我建议使用这样的函数
@Composable
@ReadOnlyComposable
fun getLocale(): Locale? {
val configuration = LocalConfiguration.current
return ConfigurationCompat.getLocales(configuration).get(0)
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要默认Locale.getDefault()返回任何内容而不是空,您可以将其调整为:
@Composable
@ReadOnlyComposable
fun getLocale(): Locale {
val configuration = LocalConfiguration.current
return ConfigurationCompat.getLocales(configuration).get(0) ?: LocaleListCompat.getDefault()[0]!!
}
Run Code Online (Sandbox Code Playgroud)
使用这一点很重要LocalConfiguration.current,这样如果配置发生更改,该函数将重新组合,您将获得最新的区域设置而不是过时的区域设置。我最近进行了一次讨论,其中提到了这一点。
ConfigurationCompat.getLocales确保它适用于所有 API 版本。如果您的 API >= 24 无论如何,请LocalConfiguration.current.locales直接使用。
额外好处:在使用每个应用程序语言 API时,这也能完美工作,因为它返回在应用程序语言设置中选择的任何语言。
要从可组合项访问区域设置,请使用以下命令:
Locale.current
Run Code Online (Sandbox Code Playgroud)
https://developer.android.com/reference/kotlin/androidx/compose/ui/text/intl/Locale#current()
| 归档时间: |
|
| 查看次数: |
4442 次 |
| 最近记录: |