안드로이드 프로그램에서 제일 많이 사용하게 되는 View 인터페이스 중 TextView와 EditText를 이용하여 엔터키 이벤트 사용 방법을 알아 봅니다.
엔터키 이벤트는 EditText에서 발생 하는데 여러가지 key event 들이 발생 하면 그중 enter event만 선택하여 처리를 하는 것으로 2가지 방법을 이용하게 됩니다. 하나는 EditText 생성시 직접 이벤트 처리를 부여하는 방법이고 다른 하나는 implements를 사용하여 OnKeyListener를 상속받아 처리하는 방법 입니다. 최종 구현 상태는 아래 그림과 같습니다.
1. 프로젝트 생성
실제로 프로젝트를 생성해 보도록 하겠습니다.
Empty Activity를 선택 하고
적당한 프로젝트 명을 입력 합니다. 신규로 추가하는 프로그램 없이 프로젝트 생성시 기본적으로 생성되는 파일을 이용하여 구현합니다.
2. Layout 구현
먼저 activity_main.xml파일에 EditText를 2개 추가해 줍니다. id는 적당히 입력을 해주면 됩니다. 하나는 생성할때 이벤트 처리 기능을 부여 하고 다른 하나는 OnKeyListener를 이용한 처리에 사용하게 됩니다.
<TextView android:id="@+id/plain_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello world" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
<EditText android:id="@+id/plain_text_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="112dp" android:hint="text1" android:inputType="text" app:layout_constraintTop_toTopOf="parent" tools:layout_editor_absoluteX="27dp" />
<EditText android:id="@+id/plain_text_input2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="168dp" android:hint="text2" android:inputType="text" app:layout_constraintTop_toTopOf="parent" tools:layout_editor_absoluteX="0dp" /> |
3. Java 기능 구현
MainActivity.java 에서 이벤트 처리 로직입니다.
3.1 첫번째 이벤트 처리 방법
첫번째는 onCreate()에서 EditText를 생성할 때 엔터 이벤트 처리 로직을 부여하는 방법 입니다. EditText를 생성 하고 바로 onKey() 기능을 추가하여 필요한 작업을 구현하면 됩니다.
@Override protected void onCreate(Bundle savedInstanceState) { eText2 = (EditText) findViewById(R.id.plain_text_input2);
eText2.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_ENTER: txtView.setText(eText2.getText()); break; } return true; } }); } |
구현된 작업은 EditText에 입력한 내용을 TextView에 출력 하게 하는 간단한 작업 입니다.
3.2 두번째 이벤트 처리 방법
두번째는 OnKeyListener를 상속받아 onKey()를 구현하는 방법 입니다. class에 implements 로 OnKeyListener를 상속하고 Override로 onKey()를 구현을 하면 됩니다.
public class MainActivity extends AppCompatActivity implements View.OnKeyListener {
@Override protected void onCreate(Bundle savedInstanceState) { eText1 = (EditText) findViewById(R.id.plain_text_input); eText2 = (EditText) findViewById(R.id.plain_text_input2); }
@Override public boolean onKey(View v, int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_ENTER) { switch (v.getId()) { case R.id.plain_text_input: txtView.setText(eText1.getText()); break; case R.id.plain_text_input2: txtView.setText(eText2.getText()); break; } return true; } return false; } |
구현된 내용은 EditText에서 키 이벤트를 받으면 엔터 키 이벤인가 확인 하고 2개의 EditText 중 어디에서 발생 하였는지 확인하여 입력한 내용을 TextView에 출력 하게 하는 작업 입니다.
위에 있는 결과는 두번째 EditText에서 엔터키 이벤트가 발생한것을 알 수 있습니다.
4. 전체 Source
4.1 activity_main.xml
<?xml version="1.0" encoding="utf-8"?> |
4.2MainAcitivity.java
두가지 기능을 한곳에 담아 보았습니다.
package copycoding.tistory.texttest; |
- copy coding -
'Android' 카테고리의 다른 글
안드로이드(Android) 핸드폰 version 정보와 API Level 확인 방법 (0) | 2021.01.21 |
---|---|
안드로이드(Android) 파일 읽기 쓰기 및 파일 위치 확인 (0) | 2020.12.25 |
안드로이드 스튜디오(Android Studio) 기본 테마(Theme) 변경 방법 (0) | 2020.12.19 |
[Android] 안드로이드 옵션 메뉴 (Option Menu) 생성 (6) | 2020.08.27 |
[Google Map] Android google places API not authorized (0) | 2020.07.09 |