2016-10-16 2 views
0

특정 색인 범위에서 TextWatcher를 사용할 때 Spannable.EXCLUSIVE_INCLUSIVE 플래그로 ForegroundColorSpan을 적용하려고합니다.Google 키보드를 입력으로하여 EditText를 잃는 경우

내 장치의 기본 입력 (삼성 키보드)으로 문제가 없으며 모든 것이 예상대로 작동하지만 Google 키보드를 입력으로 사용하면 다른 이야기입니다.

내 디버깅에서 한 글자를 변경하더라도 Google 키보드에서 전체 단어를 찾습니다. 워드 교정 기능 때문입니다. 결과적으로 Span이 단어의 특정 지점 (심지어 마지막에)에 적용되고 사용자가 더 많은 텍스트를 입력하면 범위가 사라집니다. 유일한 예외는 범위가 단어의 마지막 문자에 적용되고 사용자가 공백을 입력하면 (단어를 "끝내는"경우).

내가 발견 한 해결 방법은 입력 내용이 전체 단어인지, 아니면 언제든지 스팬을 다시 적용하는 것입니다. 그게 효과가 있지만, 매번 마지막에 캐럿을 설정해야하고, 피할 수있을 때 스핀을 다시 적용해야한다는 사실 때문에 아주 좋은 해결책은 아닙니다 (Spannable.EXCLUSIVE_INCLUSIVE 플래그를 사용하는 이유입니다.).

P. 나는 INCLUSIVE_INCLUSIVE와 같은 다른 플래그를 시도했지만 sorta는 작동합니다. 그러나 스팬을 역방향으로 적용하여 지정한 인덱스가 아닌 전체 단어에 스팬을 적용합니다.

이 문제에 대한 더 나은 해결책이 있습니까?

답변

1

그래, 다른 해결책을 찾았습니다. 키보드의 입력 제안을 끄는 것입니다. 이렇게하면 매번 입력이 전체 단어가 아니고 매번 단일 문자가되는 것을 방지 할 수 있습니다.

이렇게하려면 EditText의 inputType 특성에 textNoSuggestions 플래그를 추가해야했습니다. Turn off autosuggest for EditText?

:

android:inputType="textNoSuggestions|<other_flags>" 

여기이 inputType에 대한 자세한 내용을 발견

관련 문제