티스토리 뷰
[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;
}
});
여기까지 다 완료 해주면 소프트 키보드의 엔터키가 검색으로 바뀌고 클릭 되었을 때 이벤트를 받아 올 수 있습니다.
'Computer > Android' 카테고리의 다른 글
[Android] String 을 int 로, int를 String으로 변환 (0) | 2016.09.14 |
---|---|
[Android] code내에서 동적으로 setTextSize (0) | 2016.03.25 |
[Android] startActivityForResult(), onActivityResult(), 실행 과정 (0) | 2015.11.29 |
[Android] Bitmap Memory 관리 (0) | 2015.09.20 |
[Android] BitmapFactory.decodeByteArray() Out of memory (0) | 2015.09.13 |