2018년 12월 27일 목요일

[Android]EditText 에서 disits 설정 시 오류 현상과 해결방법

안녕하세요.

disits 속성 사용 시 키보드 오류에 대해 말해 볼까 합니다.

개발을 하다보면 여러 변수가 생기고 거기에 맞게 대응 해야 되는데 그러기가 만만치 않습니다.

이번에 좀 당황하게 만들었던 일은 EditText의 inputType 속성으로는 부족함이 있어 disits 속성을 사용 하면서 생겼습니다.

많은 버전을 Test 하지는 않았지만 6.0 버전에서 disits 속성을 설정 하고 Test 해본 결과 원하는데로 작동하지 않았습니다.

증상은 EditText에서 disits로 설정하지 않은 값을 입력 할 시 EditText에 입력된 값이 복사 되는 현상과 disits에 설정된 값이 입력되지 않는 현상 으로 볼 수 있습니다.

결론 부터 말하자면 구글의 기본  키보드 오류 인거 같습니다. 단어를 제안 해주는 과정에서 오류가 생기는거 같으나 자세하게 보지는 않았습니다. 추측 입니다.

일단 해결은 android:inputType="textNoSuggestions|textCapCharacters" 으로 해결 했습니다. 

inputType 속성 중 textNoSuggestions을 설정해 텍스트 제안을 안하도록 설정하니 원하는데로 동작 하였습니다.

저는 추가적으로 대문자로만 입력 받고 싶어서 textCapCharacters도 입력 했습니다.

이런 현상은 8.1 버전에서는 발생 하지 않았으며 6.0 버전 에서만 발생 하였습니다. 이게 버전 문제인지는 좀 더 Test 해봐야겠지만 간단한 제안 정도는 xml 속성을 이용해서 처리 가능 합니다.