是否有一个 Jetpack Compose 等效于 A password 字段,其中密码对用户可见?

问题描述

  • 产品:Android 应用
  • 编程语言:kotlin

使用 XML 创建 UI 时。密码字段有一个选项,用户可以看到密码。 开发人员所需要做的就是设置 inputType = TYPE_TEXT_VARIATION_VISIBLE_PASSWORD

在 Jetpack Compose 中有创建 textField() 的选项。然后传入 visualTransformation = PasswordVisualTransformation() 使打字变成点。但是,它不会像使用 XML 那样在变成点之前先预览几秒钟的字母。

想知道是否有密码字段的等效喷气背包撰写功能用户可以在几秒钟内看到密码然后变成点。

谢谢

解决方法

inputType 配置显示的键盘类型、可接受的字符和编辑文本的外观。
使用 1.0.0(使用 1.0.0-beta07 测试)拥有密码字段,您可以将 TextFieldKeyboardType.Password 一起使用:

keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password)

还要检查 this ticket 以获得进一步的配置。

使用带有visualTransformation的密码字段(使用掩码字符代替原始文本):

var password by rememberSaveable { mutableStateOf("") }
TextField(
    value = password,onValueChange = { password = it },label = { Text("Enter password") },visualTransformation = PasswordVisualTransformation(),keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password)
)

要使用用户可见的密码字段,只需删除 visualTransformation(并使用默认的 VisualTransformation.None):

var password by rememberSaveable { mutableStateOf("") }
TextField(
    value = password,keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password)
)

如果要在两个选项之间切换:

var passwordVisibility by remember { mutableStateOf(false) }

TextField(
   //...
   keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password),visualTransformation = if (passwordVisibility) VisualTransformation.None else PasswordVisualTransformation(),)