Skip to content

Commit 9b8a865

Browse files
committed
Code snippet for Compose doc at https://developer.android.com/quick-guides/content/show-hide-password?hl=en (show/hide password based on user toggle).
Snippet builds as-is from DAC page.
1 parent 351fcb4 commit 9b8a865

File tree

1 file changed

+37
-0
lines changed
  • compose/snippets/src/main/java/com/example/compose/snippets/text

1 file changed

+37
-0
lines changed

compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.foundation.BorderStroke
2222
import androidx.compose.foundation.background
2323
import androidx.compose.foundation.basicMarquee
2424
import androidx.compose.foundation.border
25+
import androidx.compose.foundation.clickable
2526
import androidx.compose.foundation.layout.Arrangement
2627
import androidx.compose.foundation.layout.Box
2728
import androidx.compose.foundation.layout.Column
@@ -32,6 +33,10 @@ import androidx.compose.foundation.layout.width
3233
import androidx.compose.foundation.text.KeyboardOptions
3334
import androidx.compose.foundation.text.selection.DisableSelection
3435
import androidx.compose.foundation.text.selection.SelectionContainer
36+
import androidx.compose.material.icons.Icons
37+
import androidx.compose.material.icons.filled.Visibility
38+
import androidx.compose.material.icons.filled.VisibilityOff
39+
import androidx.compose.material3.Icon
3540
import androidx.compose.material3.LocalTextStyle
3641
import androidx.compose.material3.MaterialTheme
3742
import androidx.compose.material3.OutlinedTextField
@@ -839,3 +844,35 @@ private val firaSansFamily = FontFamily()
839844

840845
val LightBlue = Color(0xFF0066FF)
841846
val Purple = Color(0xFF800080)
847+
848+
// [START android_compose_text_auto_format_phone_number_showhidepassword]
849+
@Composable
850+
fun PasswordTextField() {
851+
var password by rememberSaveable { mutableStateOf("") }
852+
var showPassword by remember { mutableStateOf(false) }
853+
val passwordVisualTransformation = remember { PasswordVisualTransformation() }
854+
855+
TextField(
856+
value = password,
857+
onValueChange = { password = it },
858+
label = { Text("Enter password") },
859+
visualTransformation = if (showPassword) {
860+
VisualTransformation.None
861+
} else {
862+
passwordVisualTransformation
863+
},
864+
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password),
865+
modifier = Modifier.fillMaxWidth(),
866+
trailingIcon = {
867+
Icon(
868+
if (showPassword) {
869+
Icons.Filled.Visibility
870+
} else {
871+
Icons.Filled.VisibilityOff
872+
},
873+
contentDescription = "Toggle password visibility",
874+
modifier = Modifier.clickable { showPassword = !showPassword })
875+
}
876+
)
877+
}
878+
// [END android_compose_text_auto_format_phone_number_showhidepassword]

0 commit comments

Comments
 (0)