EditText에서 숫자를 입력하면, 콤마가 나오게 하고 싶을때가 있다.
Kotlin Extension을 활용하여 간단하게 만들어 보았다.
사용법
EditText에 내가 만든 함수만 사용하도록 하면 끝!
의존성 추가
androidx.core 라이브러리를 사용하면 EditText에 변경된 내용만 바로 가져오는 Extension 코드가 있는데 이를 활용하였다.
app 단위에 Gradle 에 다음과 같은 의존성을 추가해주도록 하자
implementation 'androidx.core:core-ktx:1.6.0'
코드
fun EditText.initComma(
listener: ((originNumber: Double) -> Unit)? = null,
) {
var amount = ""
this.doOnTextChanged { text, _, _, _ ->
if (text.isNullOrBlank() || amount == text.toString()) return@doOnTextChanged
val removeCommaNumberString = text.toString().replace(",", "")
amount = removeCommaNumberString.toComma()
listener?.invoke(removeCommaNumberString.toDouble())
this.setText(amount)
Selection.setSelection(this.text, amount.length)
}
}
참고
androidx.core 라이브러리 내부에는 다양한 유용한 Extension 함수들이 많으니 내부를 물고, 뜯고 맛봐도 좋은 경험이 된다.
package androidx.core.widget
public inline fun TextView.doOnTextChanged(
crossinline action: (
text: CharSequence?,
start: Int,
before: Int,
count: Int
) -> Unit
): TextWatcher = addTextChangedListener(onTextChanged = action)
반응형
'개발 공부 기록하기 > - Android' 카테고리의 다른 글
Android 다국어처리 (w. Cursor AI) (1) | 2025.01.22 |
---|---|
[Android] Intent, Bundle, SavedStateHandle 객체 쉽게 전달하기. (0) | 2023.11.26 |
Android Flavor + Fastlane (Release + Screenshot) 자동화하기 (2) | 2021.07.22 |
Android Virtual Device 하단 버튼 제거 (0) | 2021.07.21 |
안드로이드 - 배경 투명도 조절하기 (0) | 2021.06.15 |