EditText와 TextWatcher를 이용한 화폐 입력과 지우기 버튼 처리
안드로이드 개발을 하다 보면 EditText와 TextWatcher를 사용해야 하는 경우가 있습니다. 특히, 화폐 단위 입력에는 콤마(,) 구분자를 추가하는 기능이 필요합니다. 이때 TextWatcher를 사용하여 사용자의 입력을 실시간으로 체크하고, 필요한 구분자를 자동으로 추가해주는 로직을 구성할 수 있습니다.
이 과정에서 커서 위치 조정도 중요합니다. 텍스트 포맷을 설정하고 나면 커서를 항상 오른쪽 끝으로 옮겨주어야 합니다.
지우기 버튼 처리에 대한 문제
그런데 이러한 방식에서 한 가지 문제점이 발생합니다. 지우기 버튼(backspace)을 롱클릭하여 한 번에 많은 양의 텍스트를 지울 때입니다. 롱클릭 시 커서 위치 조정 동작 때문에 기대하는 대로 동작하지 않게 됩니다.
Delete 버튼 체크 방법
TextWatcher에서 delete버튼 동작을 체크하는 방법을 찾아보았습니다.
위 이미지처럼 파라미터 값 중 count가 0일 경우, 글자가 삭제되는 동작(delete)인 것을 발견하였습니다. 이 조건값을 추가함으로써 문제점이 해결되었습니다.
0 개의 댓글:
Post a Comment