Puoi creare un'icona per nascondere o mostrare una password in base a un'impostazione di attivazione/disattivazione dell'utente per migliorare la sicurezza e l'esperienza utente.
Risultati
Compatibilità delle versioni
Questa implementazione richiede che minSDK del progetto sia impostato sul livello API 21 o superiore.
Dipendenze
Mostrare o nascondere una password in base all'attivazione/disattivazione dell'utente
Per mostrare o nascondere una password in base a un pulsante di attivazione/disattivazione dell'utente, crea un campo di immissione per inserire le informazioni e utilizza un'icona selezionabile per il pulsante di attivazione/disattivazione:
@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 } ) } } ) }
Punti chiave sul codice
- Mantiene lo stato di visibilità della password in
showPassword. - Utilizza un composable
BasicSecureTextFieldper l'inserimento della password. - Ha un'icona finale cliccabile, che attiva/disattiva il valore di
showPassword. - Definisce l'attributo
textObfuscationModee lo stato visibile/non visibile dell'icona finale in base allo stato dishowPassword.
Raccolte che contengono questa guida
Questa guida fa parte di queste raccolte selezionate di guide rapide che coprono obiettivi di sviluppo Android più ampi:
Testo visualizzato