티스토리 뷰

EditText 입력창에 엔터키 이벤트를 잡아 처리하는 방법.

엔터키 이벤트를 사용하려면 OnKeyListener 를 사용하면 간단하다.

EditText 클래스의 setOnKeyListener 로 이벤트를 정의해주면 된다.

EditText editText = (EditText) findViewById(R.id.edit_message);
editText.setOnKeyListener(new EditMessageOnKeyListener());

보다시피 OnkeyListener 를 구현한 임의의 클래스 EidtMessageOnKeyListener 객체가 필요하다.

이벤트들은 내부클래스로 선언해서 로직과 분리해서 정의해놓자.

class EditMessageOnKeyListener implements OnKeyListener {

	@Override
	public boolean onKey(View v, int keyCode, KeyEvent event) {

		//버튼을 눌렀을때,
		if(event.getAction() == KeyEvent.ACTION_DOWN){
			Log.d(MY_TAG, "KeyEvent.ACTION_DOWN");
		} 
		//버튼을 뗄때,
		else if(event.getAction() == KeyEvent.ACTION_UP){
			Log.d(MY_TAG, "KeyEvent.ACTION_UP");
		}

		//엔터키
		if (keyCode == KeyEvent.KEYCODE_ENTER) {
			Log.d(MY_TAG, "KeyEvent.KEYCODE_ENTER");
			return true;
		}

		return false;
	}
}

return 값을 true 로 리턴하면 이벤트가 없어진다.

KeyEvent.ACTION_DOWN
KeyEvent.KEYCODE_ENTER
KeyEvent.ACTION_UP
KeyEvent.KEYCODE_ENTER

실행해보면, 위처럼 엔터키 누르면 4줄의 로그가 보이게 된다.

눌렀을때, 키를 놓을때, 2번발생하니 생각해서 로직을 넣으면 된다.


반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함