반응형
📌Util 함수 만들어주기
// 천 단위 콤마 변환을 함수로 구현
fun thousandSeparatorTransformation(): VisualTransformation {
return VisualTransformation { text ->
val originalText = text.text
val formattedText = originalText.toLongOrNull()?.let {
DecimalFormat("#,###").format(it)
} ?: originalText
val offsetMapping = object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int {
return if (offset == 0) 0 else formattedText.length
}
override fun transformedToOriginal(offset: Int): Int {
return text.length
}
}
TransformedText(AnnotatedString(formattedText), offsetMapping)
}
}
위 처럼 구현할 수 있다.
Compose에서는 이와같이 사용할 수 있다.
✅ 실제 사용하는 방법
@Composable
fun CurrencyTextField() {
var text by remember { mutableStateOf("") }
TextField(
value = text,
onValueChange = { newText ->
// 숫자만 입력 가능하도록 필터링
if (newText.all { it.isDigit() }) {
text = newText
}
},
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number
),
visualTransformation = thousandSeparatorTransformation() // 함수형으로 변환한 VisualTransformation 사용
)
}
🟢 결과
반응형
'Android' 카테고리의 다른 글
Android ANR / Canvas / 메모리 초과 해결방법 (0) | 2024.08.28 |
---|---|
Android Coroutine example 코루틴 권장사항 (0) | 2024.07.04 |
Compose Box Basic Style (0) | 2024.06.03 |
RoomDatabase Hilt Error -> AppDatabase. AppDatabase_Impl does not exist at androidx.room.Room.getGeneratedImplementation(Room.kt:58) .. (0) | 2024.04.14 |
RecyclerView 하단 divider 깜빡임 | RecyclerView bottom divider blinking (0) | 2024.03.26 |
댓글