Published 2024. 8. 28. 18:45
반응형
1. 문제발생
BasicTextField 을 사용하면서 가격이 들어오면 천단위로 쉼표가 들어가는 로직이 필요했다.
네이티브에서는 간단하게 포맷팅을 하면 되었는데 구글링을 해보니 정말 어려워 보였다.
생소한 visualTransformation을 커스텀해야했다.
2. 해결
사실 나는 숫자만 들어가고 inputType도 Number로 되어 있다.
그래서 간단하게 해결이 가능했다.
val decimalFormat = DecimalFormat("#,###")
onValueChange = { newText ->
val cleanedText = newText.replace("[^0-9]".toRegex(), "")
text = if (cleanedText.isNotEmpty()) {
"${decimalFormat.format(cleanedText.toLong())} 원"
} else {
""
}},
위 코드처럼 수정을 하니 간단하게 해결이 되었다.
정규표현식을 사용해 숫자가 아닌 모든 문자는 공백처리를 하게 된다.
그런데 복사붙여넣기를 하지 않는 이상 입력값이 숫자가 아닌 값을 못들어오기에 필요할 것 같지는 않지만
안전요소로 추가해 놓았다.
반응형
'[# 2]…My DevelopStory' 카테고리의 다른 글
[Android] Android VIewModel이 필요한 이유 / 뷰모델이 쓰이는 이유 (0) | 2024.09.23 |
---|---|
[Android Compose] Icon onClick Event (0) | 2024.08.29 |
[Android Compose] BasicTextField을 이용한 커스텀 사투기 (2) | 2024.08.27 |
[Android Compose] Scaffold Content padding parameter it is not use (0) | 2024.08.26 |
[Android Compose] Compose Dagger Hilt 적용하기 (0) | 2024.08.26 |