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

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

版本相容性

這個實作方式需要將專案 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 屬性和結尾圖示的可見/不可見狀態。

結果

圖 1. 切換顯示/隱藏密碼圖示。

包含此指南的集合

本指南是精選的快速指南系列之一,涵蓋更廣泛的 Android 開發目標:

文字是任何 UI 的核心部分。瞭解在應用程式中顯示文字的不同方式,以提供優質的使用者體驗。
瞭解如何讓使用者透過輸入文字和其他輸入方式與應用程式互動。

有問題或意見回饋嗎?

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