엔터키를 변경하기 위해서는 우선 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;
}
});
출처: http://ccdev.tistory.com/31 [초보코딩왕의 Power Dev.]