2016.01.14 22:33


[Android] EditText 키보드 엔터(Enter)키 기능 변경


안드로이드에서 EditText에 텍스트를 입력할 때 소프트 키보드의 엔터키가 상황에 따라 다르게 나타나는 것을 종종 볼 수 있습니다. 예를 들어 아래의 그림처럼 인터넷 브라우져 주소창이면 '이동' 또는 '검색' 으로, 검색창이면 '검색'으로, 정보 입력창이면 '완료' 등을 볼 수 있죠. 이렇게 소프트 키보드의 엔터키를 상황에 맞게 바꿔주는 방법에 대해서 알아보도록 하겠습니다.





엔터키를 변경하기 위해서는 우선 EditText가 존재하는 xml에서 imeOptions와 inputType 어트리뷰트를 설정해줍니다. 예시는 엔터키를 '검색'으로 바꾼 예입니다.


xml 코드 예시


<EditText

...

android:imeOptions="actionSearch"

android:inputType="text"

/>


Java 코드 예시


editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

editText.setInputType(InputType.TYPE_CLASS_TEXT);


imeOptions 에 적용될 수 있는 어트리뷰트는 다음과 같습니다.


xml 코드


android:imeOptions="normal"     // 특별한 의미 없음

android:imeOptions="actionUnspecified"     // 특별한 의미 없음

android:imeOptions="actionNone"     // 특별한 의미 없음

android:imeOptions="actionGo"     // '이동'의 의미 (예 : 웹 브라우져에서 사용)

android:imeOptions="actionSearch"     // '검색'의 의미 (예 : 네이버 검색창)

android:imeOptions="actionSend"     // '보내기'의 의미 (예 : 메세지 작성시 사용)

android:imeOptions="actionNext"     // '다음'의 의미 (예 : 회원가입시 다음 필드로 이동시)

android:imeOptions="actionDone"     // '완료'의 의미 (예 : 정보 입력창)

android:imeOptions="actionPrevious"     // '이전'의 의미 (예 : 회원가입시 이전 필드로 이동시) - API11부터 가능


Java 코드


EditorInfo.IME_ACTION_NONE    // 특별한 의미 없음

EditorInfo.IME_ACTION_UNSPECIFIED    // 특별한 의미 없음

EditorInfo.IME_ACTION_GO     // '이동'의 의미 (예 : 웹 브라우져에서 사용)

EditorInfo.IME_ACTION_SEARCH     // '검색'의 의미 (예 : 네이버 검색창)

EditorInfo.IME_ACTION_SEND     // '보내기'의 의미 (예 : 메세지 작성시 사용)

EditorInfo.IME_ACTION_NEXT     // '다음'의 의미 (예 : 회원가입시 다음 필드로 이동시)

EditorInfo.IME_ACTION_DONE     // '완료'의 의미 (예 : 정보 입력창)

EditorInfo.IME_ACTION_PREVIOUS     // '이전'의 의미 (예 : 회원가입시 이전 필드로 이동시) - API11부터 가능


위와 같이 작성해주고 Java 코드 에서 EditText에 OnEditorActionListener 인터페이스를 연결해줘야합니다.


editText.setOnEditorActionListener(new OnEditorActionListener() { 

@Override

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

switch (actionId) {

case EditorInfo.IME_ACTION_SEARCH:

Toast.makeText(getApplicationContext(), "검색", Toast.LENGTH_LONG).show();

break;

default:

Toast.makeText(getApplicationContext(), "기본", Toast.LENGTH_LONG).show();

return false;

}

return true;

}

});


여기까지 다 완료 해주면 소프트 키보드의 엔터키가 검색으로 바뀌고 클릭 되었을 때 이벤트를 받아 올 수 있습니다.





신고


Posted by injunech

티스토리 툴바