根据用户切换开关显示或隐藏密码

您可以创建一个图标,用于根据用户切换操作隐藏或显示密码,从而提高安全性并改善用户体验。

结果

图 1. 切换显示/隐藏密码图标。

版本兼容性

此实现要求将项目的 minSDK 设置为 API 级别 21 或更高级别。

依赖项

根据用户切换操作显示或隐藏密码

如需根据用户切换操作显示或隐藏密码,请创建一个用于输入信息的输入字段,并使用可点击的图标进行切换:

@Composable
fun PasswordTextField() {
    val state = remember { TextFieldState() }
    var showPassword by remember { mutableStateOf(false) }
    BasicSecureTextField(
        state = state,
        textObfuscationMode =
        if (showPassword) {
            TextObfuscationMode.Visible
        } else {
            TextObfuscationMode.RevealLastTyped
        },
        modifier = Modifier
            .fillMaxWidth()
            .padding(6.dp)
            .border(1.dp, Color.LightGray, RoundedCornerShape(6.dp))
            .padding(6.dp),
        decorator = { innerTextField ->
            Box(modifier = Modifier.fillMaxWidth()) {
                Box(
                    modifier = Modifier
                        .align(Alignment.CenterStart)
                        .padding(start = 16.dp, end = 48.dp)
                ) {
                    innerTextField()
                }
                Icon(
                    if (showPassword) {
                        Icons.Filled.Visibility
                    } else {
                        Icons.Filled.VisibilityOff
                    },
                    contentDescription = "Toggle password visibility",
                    modifier = Modifier
                        .align(Alignment.CenterEnd)
                        .requiredSize(48.dp).padding(16.dp)
                        .clickable { showPassword = !showPassword }
                )
            }
        }
    )
}

代码要点

  • showPassword 中保持密码可见性状态。
  • 使用 BasicSecureTextField 可组合项进行密码输入。
  • 具有可点击的尾随图标,用于切换 showPassword 的值。
  • 通过 showPassword 的状态定义 textObfuscationMode 属性和尾随图标的可见/不可见状态。

包含本指南的合集

本指南属于以下精选的快速指南合集,这些合集涵盖了更广泛的 Android 开发目标:

文字对任何界面都属于核心内容。了解如何在应用中以不同方式呈现文字,从而提供愉悦的用户体验。
了解如何实现让用户通过输入文字和其他输入方式与应用互动的途径。

有问题或反馈

前往我们的常见问题解答页面,了解有关快速指南的信息;或者联系我们并告知您的想法。