Android 자료실/기능 개발
안드로이드/Android 의 (Compose TextField) - 입력 제한 설정하기 (maxLength)
Victorywskim
2024. 1. 2. 04:32
반응형
Android Compose에서 TextField의 입력 제한을 설정하는 방법을 알아보겠습니다.
TextField의 입력 제한을 설정하려면 TextField() 컴포지션의 maxLength 속성을 사용하면 됩니다. maxLength 속성은 TextField에 입력할 수 있는 최대 문자 수를 나타냅니다.
예를 들어, 다음과 같이 TextField() 컴포지션의 maxLength 속성을 사용하여 입력 제한을 설정할 수 있습니다.
val inputValue = remember { mutableStateOf("") }
TextField(
value = inputValue.value,
onValueChange = {
if (inputValue.value.length > 10) {
// 입력 제한을 초과하면 TextField의 값을 초과한 부분을 제거합니다.
inputValue.value = it.take(10)
} else {
inputValue.value = it
}
},
label = {
Text(text = "입력 값")
},
placeholder = {
Text(text = "1자 이상 입력")
},
modifier = Modifier
.fillMaxWidth()
.padding(20.dp)
)
위와 같이 구현해도 별 문제 없겠지만, 일반적으로 플랫폼을 개발하다보면 입력값 별로 maxLength 가 정해진 경우가 대부분입니다.
따라서 조금 더 이쁘게 구현하고자 한다면 다음과 같이 구현 해볼 수 있습니다.
enum class InputTextValueEnum(val minLength: Int, val maxLength: Int) {
EMAIL(minLength = 8, maxLength = 100),
PHONE_NUMBER(minLength = 8, maxLength = 11),
PASSWORD(minLength = 6, maxLength = 6),
ETC(minLength = 0, maxLength = 50),
}
val inputValue = remember { mutableStateOf("") }
TextField(
value = inputValue.value,
onValueChange = {
if (inputValue.value.length > InputTextValueEnum.ETC.maxLength) {
// 입력 제한을 초과하면 TextField의 값을 초과한 부분을 제거합니다.
inputValue.value = it.take(InputTextValueEnum.ETC.maxLength)
} else {
inputValue.value = it
}
},
label = {
Text(text = "입력 값")
},
placeholder = {
Text(text = "1자 이상 입력")
},
modifier = Modifier
.fillMaxWidth()
.padding(20.dp)
)
개선된 코드에서는 maxLength 만 사용하고 있지만, minLength 는 데이터 저장과 같은 로직에서 validation 을 할때 사용하시면 되겠습니다.
감사합니다.
반응형