【发布时间】:2021-12-18 00:11:40
【问题描述】:
尝试将 Compose 慢慢集成到我们的应用中。 该应用在几个国家/地区发布,因此我们支持英语以外的其他语言。
在使用 Compose 的第一步中,我们正在尝试迁移“更改密码”屏幕。 这是一个小代码sn-p:
@Composable
fun ChangePasswordScreen() {
Scaffold(
topBar = {
CustomTopBarWithBackArrow(title = stringResource(id = R.string.a_change_password))
},
modifier = Modifier
.background(Color.White)
.fillMaxSize(),
content = {
ChangePasswordScreenContent()
}
)
}
@Composable
fun ChangePasswordScreenContent() {
Column(
modifier = Modifier
.padding(16.dp)
.background(colorResource(id = R.color.white))
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {
PasswordInput(
title = stringResource(id = R.string.d_current_password),
placeholder = stringResource(id = R.string.e_password_length)
)
}
}
@Composable
fun PasswordInput(title: String, placeholder: String) {
TextFieldTitle(title = title)
PasswordTextField(placeholder = placeholder)
}
我正在使用 stringResource 方法。 用户可以更改所选国家,并根据该国家更新区域设置。 由于某种原因,stringResource 方法不会更新为最新的 Locale,除非我们重新启动应用程序。
LocalConfiguration.current.locales[0].country 总是返回正确的国家代码。但是资源没有更新。
有没有人找到可能的解决方案? 或者,我是否遗漏了什么?
【问题讨论】:
-
如何更改国家/地区?组合物是否会随着国家/地区的变化而重新组合?
-
我实际上有另一个屏幕供用户选择一个国家。并根据该选择更新语言环境。我执行“Locale.setDefault(newLocale)”,然后执行“context.resources.configuration.setLocale(newLocale)”
标签: android kotlin localization android-jetpack-compose androidx