반응형
자주 사용하는 EditView에서 정규화와 filter를 이용한 입력처리를 보여주고자 한다.
먼저 EditView에서 우리는 숫자와 점 밖에 안쓰기 때문에 숫자 키보드를 나오게 하고 다른 키 입력을 못하게 막도록 다음과 같이 선언한다.
android:inputType="phone"
android:digits="1234567890."
이제 MainActivity단에서 onCreate단에 아래와 같이 선언해준다.
val filters = arrayOfNulls<InputFilter>(1)
filters[0] = InputFilter { source, start, end, dest, dstart, dend ->
if (end > start) {
val destTxt = dest.toString()
val resultingTxt = destTxt.substring(0, dstart) + source.subSequence(
start,
end
) + destTxt.substring(dend)
if (!resultingTxt.matches(Regex("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?"))) {
return@InputFilter ""
} else {
val splits = resultingTxt.split(".")
for (i in splits) {
if (i != ""){
if (i.toInt() > 255 || i.toInt() == 0) {
return@InputFilter ""
}
}
}
}
}
null
}
editView.filters = filters
반응형
'프로그래밍 > Android' 카테고리의 다른 글
[Android] 컨트롤에 border 삽입하기 (0) | 2020.11.25 |
---|---|
[Android] 경기지역화폐 지도 만들기 - 5 (0) | 2020.10.05 |
[Android] RecyclerView 사용하기 (0) | 2020.09.17 |
[Android] Title bar 또는 Action Bar 없애기 (0) | 2020.09.16 |
[Android] Wifi로 Android Device 연결하여 개발하기 (0) | 2020.09.16 |