在 Android Jetpack Compose 中管理区域设置

问题描述 投票:0回答:3

如何使用 android Jetpack Compose 管理区域设置。 compose 如何找到要在视图中设置的区域设置。

android locale android-jetpack-compose
3个回答
13
投票

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)
}

或者,如果您想默认为

Locale.getDefault()
返回的值且不为空,您可以将其调整为:

@Composable
@ReadOnlyComposable
fun getLocale(): Locale {
  val configuration = LocalConfiguration.current
  return ConfigurationCompat.getLocales(configuration).get(0) ?: LocaleListCompat.getDefault()[0]!!
}

使用

LocalConfiguration.current
非常重要,这样如果配置发生更改,该函数将重新组合,您将获得最新的区域设置而不是过时的区域设置。我最近进行了此讨论,其中提到了这一点。

ConfigurationCompat.getLocales
确保它适用于所有 API 版本。如果您使用的 API >= 24,请直接使用
LocalConfiguration.current.locales

奖励:在使用每个应用程序语言 API 时,这也可以完美工作,因为它返回在应用程序语言设置中选择的任何语言。


4
投票

要从可组合项访问区域设置,请使用以下命令:

Locale.current

https://developer.android.com/reference/kotlin/androidx/compose/ui/text/intl/Locale#current()


0
投票
import androidx.compose.ui.text.intl.Locale
val local =  Locale.current

java.util.Locale(locale.language)
© www.soinside.com 2019 - 2024. All rights reserved.