[Android] EditTextView 활용

Twaun·2022년 8월 15일
0

Android

목록 보기
21/24

EditTextView 란?

TextView를 상속하며 text를 입력받고 수정가능한 유저 인터페이스 뷰다. XML에서 정의할 때 반드시 입력형태(Input Type)을 정해줘야만 한다.

<EditText
     android:id="@+id/editTextView"
     android:layout_height="wrap_content"
     android:layout_width="match_parent"
     android:inputType="text"/>

입력 형태는 글자, 숫자, 비밀번호 등 원하는 다양한 형태로 입력 받을 수 있도록 지원하고 이에 맞게 키패드를 보여준다.

속성

EditText의 여러 속성에 대해서 알아보자.

cursor

textCursorDrawable 속성을 통해서 커서 스타일을 정의할 수 있다.

background

background 스타일을 정의할 수 있다. 대부분 직사각형의 형태로 스타일을 정의해서 사용한다.

maxLength

입력 최대 글자를 정의할 수 있다.

enabled

수정 가능 여부를 정의할 수 있다. default 는 true 이다.

gravity

뷰 영역에서 글자 위치를 정의할 수 있다.

android:gravity="start|top"

start, top, center 등 다양한 설정이 가능하며 or 연산자(|)를 통해서 중복으로 정의가 가능하다.

hint

힌트 글자를 정의할 수 있다. 입력 가이드를 안내하는 용도로 사용된다. text 관련 스타일이 같이 적용되며 textColorHint로 색을 별도로 지정할 수 있다.

multiLine

inputType을 textMultiLine으로 정의하면 여러 줄을 입력받을 수 있다.

android:inputType="textMultiLine"

여러 줄 입력이 가능한 EditText이다. 줄이 늘어남에 따라 스크롤도 가능하다.

android:scrollbarStyle="insideOverlay"
android:scrollbarThumbVertical="@drawable/scrollbar"
android:scrollbars="vertical"
  • scrollbarStyle
    스크롤바의 위치와 관련된 스타일을 정의한다.
  • scrollbarThumbVertical
    스크롤바 뷰 스타일을 정의할 수 있다.
  • scrollbars
    스크롤 방향을 정의할 수 있다.

양방향 바인딩

Text는 특정 데이터를 바인딩해서 사용이 가능한데, EditText는 유저 인터페이스로 외부에서도 데이터 변경이 일어나기 때문에 양방향 데이터 바인딩이 가능하다.

즉, 내부 데이터와 유저의 입력 데이터가 동기화 된다는 것이다!!

// 일반적인 데이터 바인딩
android:text="@{viewModel.text}"

// 양방향 데이터 바인딩
android:text="@={viewModel.text}"

❗️ 결합되어 있는 데이터는 null 값이 아님을 보장해야한다. 즉, 초기값이 존재해야하고, 별도의 초기값이 없을 때는 EMPTY("")로 초기화를 해줘야 한다.

키보드 제어

AndroidManifest.XML 에서 해당 액티비티에 windowSoftInputMode 속성을 통해 EditText에 포커스 되고 키보드가 올라올 때 화면이 딸려 올라가는 것을 막을 수 있다.

<activity
	android:name=".MainActivity"
    android:windowSoftInputMode="adjustPan"
    android:configChanges="keyboardHidden|orientation|screenSize">
</activity>

configChanges 속성을 통해서 화면 변경이 일어날 때 동작 방식을 정의할 수 있고 keyboardHidden 값을 통해서 키보드 가용성이 변경되었을 때 앱이 다시 시작하지 못하도록 할 수 있다.

profile
Android Developer

0개의 댓글