Android EditText 키보드 IME 우선 순위

작업하는 내용중에 검색어를 영문 우선으로 처리해야할 경우가 생겼다.
한글 키보드로도 입력을 받되 키보드를 닫고 다시 EditText 를 터치하면 키보드가 올라오는데 이때 영문 키보드가 먼저 떠야한다.

검색을 해봤지만 영문 우선으로 키보드를 뜨는 내용은 적용이 잘 안되었다.
대부분 privateImeOptions 에 관한 내용이었는데 실제로 적용해 보면 처리가 되지 않는다. 여러번 삽질을 거듭하고 난뒤 의외로 간단한 방법을 찾아냈다. 아마 검색해도 관련 내용은 찾을수는 있는데 대부분 설명도 거의 없이 간단하게 기술되어 있어서 그런지 검색이 잘 걸리질 않는다. 그래서 삽질을 동반했다. -_-;

정리하자면 영문 우선으로 키보드를 입력받고자 한다면 다음과 같이
xml 상에 inputType 에 “textVisiblePassword” 라고 추가해 주면 된다.

<EditText
android:id="@+id/edtKeyword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textVisiblePassword"
android:privateImeOptions="defaultInputmode=english;" >

그런데 주의할 점이 있다. 외산 단말기 특히 넥서스 시리즈의 경우는
저렇게 처리해주면 아예 영문 키보드 밖에 뜨질 않는다. 다른 앱들의 경우에도 넥서스 시리즈는 예외처리를 해둔 모양이었다.

if(Build.MODEL.contains("Nexus") || Build.MODEL.contains("nexus")) {
edtKeyword.setInputType(InputType.TYPE_CLASS_TEXT);
}

이렇게 예외 적용 시키면 대부분의 단말기에서는 이상없이 처리되는것을 확인할수 있다. 아직까지 정확하게 영문 우선으로 띄우는 방식이 존재하지 않는 모양이다.(정책상 강제할수 없는 부분도 있는것 같고 SECURE 관련 퍼미션이 적용이 되어야 되는데 사실상 처리가 안된다.) 트릭이라도 사용해서 처리해 주어야 되는 현실이다.

Show your support

Clapping shows how much you appreciated Elena Kim’s story.