본문으로 바로가기

(EditText) 키보드 Enter(엔터) 키 변경

category Android 2016. 4. 25. 03:04
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

아래 사진과 같이 안드로이드 EditText에서 키보드의 엔터키를 다양한 버튼으로 바꿔 사용하는 것을 볼 수 있습니다.




              


안드로이드 xml의 EditText에 android:imeOption을 설정할 수 있는데 아래와 같은 옵션들을 설정할 수 있습니다.


android:imeOptions="actionGo" // '이동'을 나타내며 인터넷 브라우저에서 주로 사용합니다.

android:imeOptions="actionSearch" // '검색'을 나타냅니다.

android:imeOptions="actionSend" // '보내기'를 나타내며 카카오톡같은 채팅창의 보내기와 동일합니다.

android:imeOptions="actionNext" // '다음'의 의미 다음 화면으로 넘어갈 때 사용됩니다.

android:imeOptions="actionDone" // '완료'를 나타냅니다.

android:imeOptions="actionPrevious" // '이전'을 나타내며 예를들어 회원가입시 이전 필드로 이동할 때 사용됩니다. 주의사항으로  API11부터 가능합니다.



아래는 간단한 xml 예제 입니다.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.programmer.ktko.myapplication.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edt1" android:singleLine="true" android:imeOptions="actionGo" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edt2" android:singleLine="true" android:imeOptions="actionSearch" /> </LinearLayout>



그렇다면 Enter변경된 키의 이벤트를 받아오는 방법에 대해 소스를 살펴보겠습니다.

actionID가 xml에서 선언한 imeOption의 값을 나타냄으로 Switch 또는 if문으로 구분해주시면 됩니다.



public class MainActivity extends AppCompatActivity { EditText edt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edt = (EditText)findViewById(R.id.edt1); edt.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { switch(actionId) { case EditorInfo.IME_ACTION_GO: Toast.makeText(MainActivity.this,"edt1의 ACTION_GO 이벤트를 입력받았습니다",Toast.LENGTH_SHORT).show(); break; } return true; } }); } }