Oculta o muestra la contraseña según un botón de activación del usuario
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Puedes crear un ícono para ocultar o mostrar una contraseña según un botón de activación del usuario para mejorar la seguridad y la experiencia del usuario.
Compatibilidad de versiones
Esta implementación requiere que el minSDK de tu proyecto se establezca en el nivel de API 21 o superior.
Dependencias
Oculta o muestra una contraseña según el botón de activación del usuario
Para ocultar o mostrar una contraseña según un botón de activación del usuario, crea un campo de entrada para ingresar información y usa un ícono en el que se pueda hacer clic para el botón de activación:
Tiene un ícono final en el que se puede hacer clic, que activa o desactiva el valor de showPassword.
Define el atributo textObfuscationMode y el estado visible o no visible del ícono final según el estado de showPassword.
Resultados
Figura 1: Activar o desactivar el ícono para mostrar y ocultar la contraseña
Colecciones que contienen esta guía
Esta guía forma parte de estas colecciones de guías rápidas seleccionadas que abarcan objetivos más amplios de desarrollo de Android:
Texto visible
El texto es una pieza central de cualquier IU. Descubre las diferentes formas
en que puedes presentar texto en tu app para proporcionar una experiencia del usuario encantadora.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-02-06 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-02-06 (UTC)"],[],[],null,["# Show or hide password based on a user toggle\n\n\u003cbr /\u003e\n\nYou can create an icon to hide or show a password based on a user toggle to\nimprove security and enhance the user experience.\n\nVersion compatibility\n---------------------\n\nThis implementation requires that your project minSDK be set to API level 21 or\nhigher.\n\n### Dependencies\n\n### Kotlin\n\n\u003cbr /\u003e\n\n```kotlin\n implementation(platform(\"androidx.compose:compose-bom:2025.08.00\"))\n implementation(\"androidx.compose.material3:material3\")\n implementation (\"androidx.compose.material:material-icons-extended\")\n \n```\n\n\u003cbr /\u003e\n\n### Groovy\n\n\u003cbr /\u003e\n\n```groovy\n implementation platform('androidx.compose:compose-bom:2025.08.00')\n implementation 'androidx.compose.material3:material3'\n implementation 'androidx.compose.material:material-icons-extended'\n \n```\n\n\u003cbr /\u003e\n\nShow or hide a password based on user toggle\n--------------------------------------------\n\nTo show or hide a password based on a user toggle, create an input field for\nentering information and use a clickable icon for the toggle:\n\n\n```kotlin\n@Composable\nfun PasswordTextField() {\n val state = remember { TextFieldState() }\n var showPassword by remember { mutableStateOf(false) }\n BasicSecureTextField(\n state = state,\n textObfuscationMode =\n if (showPassword) {\n TextObfuscationMode.Visible\n } else {\n TextObfuscationMode.RevealLastTyped\n },\n modifier = Modifier\n .fillMaxWidth()\n .padding(6.dp)\n .border(1.dp, Color.LightGray, RoundedCornerShape(6.dp))\n .padding(6.dp),\n decorator = { innerTextField -\u003e\n Box(modifier = Modifier.fillMaxWidth()) {\n Box(\n modifier = Modifier\n .align(Alignment.CenterStart)\n .padding(start = 16.dp, end = 48.dp)\n ) {\n innerTextField()\n }\n Icon(\n if (showPassword) {\n Icons.Filled.Visibility\n } else {\n Icons.Filled.VisibilityOff\n },\n contentDescription = \"Toggle password visibility\",\n modifier = Modifier\n .align(Alignment.CenterEnd)\n .requiredSize(48.dp).padding(16.dp)\n .clickable { showPassword = !showPassword }\n )\n }\n }\n )\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt#L868-L909\n```\n\n\u003cbr /\u003e\n\n### Key points about the code\n\n- Maintains the password visibility state in`showPassword`.\n- Uses a [`BasicSecureTextField`](/reference/kotlin/androidx/compose/foundation/text/package-summary#BasicSecureTextField(androidx.compose.foundation.text.input.TextFieldState,androidx.compose.ui.Modifier,kotlin.Boolean,kotlin.Boolean,androidx.compose.foundation.text.input.InputTransformation,androidx.compose.ui.text.TextStyle,androidx.compose.foundation.text.KeyboardOptions,androidx.compose.foundation.text.input.KeyboardActionHandler,kotlin.Function2,androidx.compose.foundation.interaction.MutableInteractionSource,androidx.compose.ui.graphics.Brush,androidx.compose.foundation.text.input.TextFieldDecorator,androidx.compose.foundation.text.input.TextObfuscationMode,kotlin.Char)) composable for password entry.\n- Has a clickable trailing icon, which toggles the value of `showPassword`.\n- Defines the [`textObfuscationMode`](/reference/kotlin/androidx/compose/foundation/text/input/TextObfuscationMode) attribute and the visible/not-visible state of the trailing icon by the state of `showPassword`.\n\nResults\n-------\n\n\u003cbr /\u003e\n\n**Figure 1.** Toggling the show-and-hide password icon.\n\n\u003cbr /\u003e\n\nCollections that contain this guide\n-----------------------------------\n\nThis guide is part of these curated Quick Guide collections that cover\nbroader Android development goals: \n\n### Display text\n\nText is a central piece of any UI. Find out different ways you can present text in your app to provide a delightful user experience. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/display-text) \n\n### Request user input\n\nLearn how to implement ways for users to interact with your app by entering text and using other means of input. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/request-user-input) \n\nHave questions or feedback\n--------------------------\n\nGo to our frequently asked questions page and learn about quick guides or reach out and let us know your thoughts. \n[Go to FAQ](/quick-guides/faq) [Leave feedback](https://issuetracker.google.com/issues/new?component=1573691&template=1993320)"]]