아래 사진과 같이 안드로이드 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; } }); } }
'Android' 카테고리의 다른 글
(Layout) LinearLayout (0) | 2016.04.26 |
---|---|
(View,ViewGroup) 안드로이드 View와 ViewGroup (0) | 2016.04.26 |
(EditText) 포커스 이동, 커서 이동 (0) | 2016.04.25 |
(EditText) addTextChangedListener 통해 이벤트 받아오기 (2) | 2016.04.25 |
디바이스(Device) 화면 크기 구하기 (0) | 2016.04.25 |