본문으로 바로가기

(EditText) 포커스 이동, 커서 이동

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

포커스 이동에 대해 간단한 예를 생각해 보았다.

로그인에 필요한 ID와 Password를 입력할 때 ID를 입력하고 Password를 입력할 때 EditText를 클릭하여 입력하기 보단 다음 버튼을 눌러 Password를 입력하여 사용한다.


아래 사진을 보면 ID를 입력하는 키보드에 다음 버튼이 있고, 다음 버튼을 클릭하면 Password로 넘어가게 된다. 어떻게 사용되는지 확인해보자.





아래는 MainActivity의 xml이다.


ID를 입력하는 EditText를 보면 

android:singleLine ="true" , android:nextFocusDown="@+id/2"를 볼 수 있다.


여기서 중요한게 있다.

  • nextFocusDown으로 다음 editText를 지정하면 될 것같지만 android:singleLine="true" 가 있어야한다. 이 옵션은 EditText를 단 한개의 줄로만 사용한다는 것으로 EditText의 내용이 길어져도 1개의 줄로 사용할 수 있다. 만약 android:singleLine="true"가 없다면 nextFocusDown가 선언되어 있어도 다음 버튼이 없어지게 되고 엔터 버튼이 생성된다.

  • nextFocus를 지정하기 위해 다음 ID를 선언해야 하는데 생각해보니 다음 EditText는 선언되어 있지 않아 @id/를 사용할 수 없다. 이럴 경우에는 @+id/를 사용하여 아래와 같이 선언을 해준다.


<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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: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:hint="ID" android:singleLine="true" android:nextFocusDown="@+id/edt2" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/edt1" android:id="@+id/edt2" android:hint="PASSWORD" android:singleLine="true" /> </RelativeLayout>