728x90
이런식으로 첫번째 문자는 대문자로
4번째 입력시 '-' 자동 추가 되게 만들고 싶었다.
비슷한 키워드로 검색하면 휴대폰 번호 포맷 적용 방식만 나와 있어서 삽질을 많이 했다...
view.userSettingSerialText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) { //텍스트 변경 후
//p0: 추가된 문자열
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { //텍스트 변경 전
//p0: 현재 에디트텍스트에 입력된 문자열, p1: 새로 추가될 문자열 위치, p2: 변경될 문자열의 수, p3: 새로 추가될 문자열 수
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { //텍스트 변경 시
//p0: 현재 에디트텍스트에 입력된 문자열, p1: 새로 추가될 문자열 위치, p2: 삭제된 기존 문장열의 수, p3: 새로 추가될 문자열 수
view.userSettingSerialText.removeTextChangedListener(this) //리스너 사용 해재
var tempString: String = view.userSettingSerialText.text.toString()
tempString = tempString.toUpperCase(Locale.getDefault()) //대문자로 변경
view.userSettingSerialText.setText(tempString)//대문자 변경 문자 대입
view.userSettingSerialText.setSelection(tempString.length)//커서 위치 끝으로
Log.d(LOG2, "onTextChanged p0: ${p0}, p1: ${p1}, p2: ${p2}, p3: ${p3}")
if ((view.userSettingSerialText.text.length == 5) && (p1 != 5)){ //5번째 문자 추가시 '-' 추가, 삭제시 '-' 추가 동작 안함, 5번째는 삭제시에만 나옴
tempString = tempString + "-"
view.userSettingSerialText.setText(tempString)
view.userSettingSerialText.setSelection(tempString.length)
}
Log.d(LOG2, "onTextChanged p0: ${p0}, p1: ${p1}, p2: ${p2}, p3: ${p3}")
view.userSettingSerialText.addTextChangedListener(this) //리스터 다시 사용
}
})
view.userSettingSerialText.removeTextChangedListener(this) //리스너 사용 해재
view.userSettingSerialText.addTextChangedListener(this) //리스터 다시 사용
이걸 안해주면 리스너가 계속 호출 되며 APP이 이상 해지는 모습을 볼 수 있다.
view.userSettingSerialText.setOnKeyListener { v, keyCode, event ->
Log.d(LOG2, "keyCode: ${keyCode}")
true
}
그리고 위의 리스터는 꼭 추가 하지 말고 해야 한다.
키보드의 문자 지우는 동작을 하지 않는다.
아마도 저기서 따로 처리 해주면 될거 같긴 한데 필요성을 느끼지 못했다.
후...이거때문에 삽질을 하루나 했다...ㅂㄷㅂㄷ....
참고 자료: eso0609.tistory.com/42
728x90
'안드로이드' 카테고리의 다른 글
안드로이드 코틀린 / kotlin fragmentmanager has been destroyed (0) | 2021.03.23 |
---|---|
안드로이드 코틀린 / Do not concatenate text displayed with setText. Use resource string with placeholder (0) | 2021.03.15 |
안드로이드 코틀린 파이어 스토어 (0) | 2021.01.22 |
안드로이드 코틀린 비디오뷰 IP카메라, CCTV rtsp 스트리밍 재생 하기 / android kotlin videoview rtsp (0) | 2021.01.15 |
안드로이드 코틀린 토스트 메세지 중복 않되게 하기 / android kotlin toast message overab (0) | 2021.01.12 |