본문 바로가기
Android

[깡쌤의 안드로이드 프로그래밍 with 자바 - 2022 - 쌤즈] 정리 10 - EditText

by 들풀민들레 2022. 5. 9.

책의 모든 내용을 저자 직강으로 진행한 강의는 ssamz.com 에서 들으실 수 있습니다.

본 글은 [깡쌤의 안드로이드 프로그래밍 with 자바 - 2022 - 쌤즈] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책 혹은 인강(www.ssamz.com)을 통해 확인해 주세요.

 

3.3.3. EditText


EditText는 사용자에게 데이터를 입력받을 때 사용하는 뷰입니다. EditText는 문자열이 출력된다는
면에서 TextView와 성격이 같으므로 TextView를 상속받아 작성되었습니다. 그러므로 TextView의
거의 대부분 속성을 EditText에도 지정할 수 있습니다.

 

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />

 

EditText 뷰는 layout_width, layout_height 정도의 속성 설정만으로도 이용할 수 있습니다. 이처럼 속성을 설정하여
화면에 출력해보면 다음처럼 한 줄 입력 창으로 나옵니다.

 

그런데 한 줄 입력 창에서 사용자가 키보드의 엔터 키를 눌러 개행하면, 입력 창이 여러 줄로 자동으로 늘어납니다.

 

이처럼 EditText는 기본 한 줄로 보이다가 아래로 늘어나 여러 줄 입력으로 보이게 되며, 만약 한 줄
혹은 여러 줄로 고정하길 원한다면 속성으로 지정하여야 합니다. 중요 속성 몇 가지를 살펴보겠습니다.


lines
처음 화면에 보일 때부터 특정 줄만큼 보이게 할 때 사용하는 속성입니다. 만약 lines="3"으로
지정하면, 처음부터 세로 방향 3줄 입력 크기로 출력되고 더는 늘거나 줄지 않습니다. 물론 화면에서
입력 창의 크기가 3줄로 고정된다는 것이지 3줄 내에서 스크롤 되어 여러 줄 입력은 가능합니다.


maxLines
lines 속성과 차이가 있는데 maxLines="3"으로 지정하더라도 처음 화면에 보일 때는 한 줄 입력
크기로 보입니다. 사용자가 키보드에서 엔터를 입력하면 아래로 늘어나 최대 3줄까지 늘어나고 더는
늘어나지 않습니다. 물론 lines와 동일하게 EditText 내에서 스크롤 되어 여러 줄 입력은 가능합니다.


inputType
아주 중요하고 자주 이용하는 속성입니다. inputType 속성은 크게 두 가지 목적으로 이용하는데요.
첫 번째 목적은 EditText에 글을 입력하기 위해 올라오는 키보드의 모드를 제어하는 데 있고, 두 번째
목적은 사용자에게 한 줄 혹은 여러 줄 입력을 강제하는 데 있습니다.

 

첫 번 째 , 키보드 모드를 제어하는 목적으로 사용하는 예를 살펴보겠습니다. 만약 전화번호를 입력받으려고 EditText를 제공하는 예를 생각해 봅시다.


그림 3-33은 글을 입력받으려고 키보드가 올라오기는 했는데 문자 키 우선 모드로 올라왔습니다. 물론 사용자가 키보드 모드를 전환하여 전화번호를 입력하면 됩니다. 하지만 사용자 입장에서는 귀찮을 수 있습니다. 어차피 전화번호만 입력받는 곳이라면 애초에 전화번호 입력 모드로 올라온다면 더 좋겠죠? 이처럼 사용자에게 입력받으려고 올라오는 키보드 모드를 제어하고자 할 때 inputType 속성을 사용합니다.

 

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:hint="전화번호 입력"/>

위의 코드는 inputType 속성에 phone 값을 주어서 키보드가 전화번호 입력 모드로 올라오게 하였습니다. 결과는 다음과 같습니다.

 


이처럼 키보드의 모드를 지정하려고 할 때 inputType 속성을 사용하며, phone 이외  number, textEmailAddress, textPassword 등 다양한 속성값이 제공됩니다.

 

inputType 속성을 사용하는 또 하나의 예는 한 줄 입력 혹은 여러 줄 입력을 강제하고자 할 때입니다.
예를 들어, 사용자에게 id를 입력받아야 하는 상황을 생각해 봅시다. id는 한 줄 입력만으로도
충분합니다. 생각하기에는 lines="1", maxLines="1"로 지정하여 한 줄 입력을 강제하면 될 것처럼
보이지만, 이 속성들은 화면에 EditText가 몇 줄로 표시되는지에 대한 속성이지, 사용자의 입력을
강제할 수는 없습니다. 결국 사용자가 한 줄만 입력하도록 제어해야 하는데요. 이때 사용되는 속성도
inputType입니다.

 

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="한줄 입력만 보장"/>

EditText에 inputType="text"로 지정하면 사용자가 한 줄만 입력할 수 있게 됩니다. 물론 값을te xt로
주지 않고 phone, number, textEmailAddress 등으로 지정해도 한 줄만 입력할 수 있게 됩니다.
다음은 inputType 속성에 지정할 수 있는 값을 정리한 표입니다. 속성 여러 개를 동시에 지정할 때는
| 연산자를 이용하면 됩니다.

 

gravity
EditText에 입력할 글의 위치를 지정할 수 있습니다. 기본값은 left top이며 이를 center 혹은 right
등을 지정하여 위치를 조정합니다.

 

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"/>

gravity 속성은 EditText만을 위한 속성은 아니며, 모든 뷰에서 내용이 정렬되는 위치를 지정할 때
사용됩니다. 레이아웃을 설명하는 곳에서 다시 다루겠습니다.

 

책의 모든 내용을 저자 직강으로 진행한 강의는 ssamz.com 에서 들으실 수 있습니다.