根據使用者切換按鈕顯示或隱藏密碼

您可以建立圖示,根據使用者切換開關來隱藏或顯示密碼,藉此提升安全性並改善使用者體驗。

結果

圖 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 開發目標:

文字是任何 UI 的核心元素。瞭解在應用程式中呈現文字的不同方式,提供令人愉悅的使用者體驗。
瞭解如何實作使用者與應用程式互動的方式,包括輸入文字及使用其他輸入方式。

如有問題或想提供意見

前往常見問題頁面,瞭解快速指南或與我們聯絡,分享您的想法。