fun TextfieldCustom() { var text by remember { mutableStateOf(("")) } var hint by remember { mutableStateOf(("")) } var isClicked by remember { mutableStateOf((false)) } Column( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { Box(modifier = Modifier.height(20.dp).align(Alignment.Start)) { this@Column.AnimatedVisibility( visible = isClicked, ) { Text(text = "Hint") } } TextField( value = hint, onValueChange = { text = it hint = if (it.isNotEmpty()) { text } else { it } }, colors = TextFieldDefaults.textFieldColors( textColor = Color.Gray, disabledTextColor = Color.Transparent, backgroundColor = Color.Transparent, focusedIndicatorColor = Color.Transparent, unfocusedIndicatorColor = Color.Transparent, disabledIndicatorColor = Color.Transparent ), modifier = Modifier .onFocusChanged { isClicked = it.isFocused } .background(Color.White) .drawBehind { val borderSize = 4.dp.toPx() drawLine( color = Color.Red, start = Offset(0f, size.height), end = Offset(size.width, size.height), strokeWidth = borderSize ) }, placeholder = { if (!isClicked) { Text(text = "Hint") } else { Text(text = "") } }, ) } }}