JLOG

[안드로이드 스튜디오 강좌 #13] 기본 위젯 공부하기 : EditText 본문

안드로이드 스튜디오/Do it 안드로이드 스튜디오

[안드로이드 스튜디오 강좌 #13] 기본 위젯 공부하기 : EditText

정정선선 2020. 5. 9. 05:49

이전 글에 이어서 진행합니다.

[안드로이드 스튜디오 강좌 #13] 기본 위젯 공부하기 :  TextView

[안드로이드 스튜디오 강좌 #13] 기본 위젯 공부하기 :  Button

 

 

! 목표

어플 내에서 글자를 작성하고 수정할 수 있는 EditText 공부해보자

 

 

 

 

EditText

EditText는 사용자에게 값을 입력 받을 때 사용 된다.

이 위젯에 글자를 입력하려고 커서를 옮기면 키패드가 화면에 나타나 글자를 입력할 수 있다.

 

 

-실습

/app/res/layout 폴더 안에 edittext.xml 파일을 생성하자 (LinearLayout)

Palette 창에서 Text-Plain Text을 화면에 나타내주고,

 

하단의 XML 코드와 같이 수정하자

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="text"
        android:text="이름을 입력하세요" />
</LinearLayout>

 

-android:inputType : 입력되는 글자의 유형 표시, text로 지정하여 클릭하면 글자 키패드가 보이도록 했다.

-andorid:text : 기본 안내문의 hint 표시

 

실행시켜보면 EditText에 글자를 입력할 수 있다.

 

 

 

 

* 참고 *

TextView와 EditText의 다른 기능들

 

TextView, EditText 등은 모두 뷰를 상속받아 만들어진 것이므로 뷰의 속성들을 그대로 가지고 있다. 다양한 속성들을 살펴보자

 

1.커서 관련 속성

-selectAllOnFocus 속성을 "true"로 설정하면

포커스를 받을 대 문자열 전체가 선택 되어 새로운 문자열을 입력했을 때, 입력되어 있던 문자열을 한꺼번에 대체해 글자를 손쉽게 바꿀 수 있다.

-cursorVisible 속성을 "false"로 설정하면 커서를 보이지 않게 설정할 수 있다.

 

 

-문자열을 선택하거나 복사, 잘라내기 등의 기능을 넣을 때 사용하는 메소드들

public int getSelectionStart() : 선택된 영역의 시작 위치를 알려줌

public int getSelectionEnd() : 선택된 영역의 끝 위치를 알려줌, 선택 영역이 없으면 현재 위치를 알려줌

public void setSelection(int start, int stop) : 선택영역을 지정하는 데 사용

public void setSelection(int index)

public void selectAll() : 전체 문자열을 선택함

public void extendSelection(int index) : 선택 영역을 확장하는 데 사용

 

 

 

 

2. 자동 링크 관련 속성

autoLink 속성을 true로 설정하면 웹페이지 주소, 이메일 주소를 링크 색상으로 표시할 수 있다.

링크를 누르면 웹페이지에 바로 접속하거나 메일 편집기를 띄워주는 기능을 간단하게 넣을 수 있다.

 

 

 

 

3. 줄 간격 조정 관련 속성

lineSpacingMultiplier, lineSpacingExtra로 텍스트뷰의 줄 간격을 설정할 수 있다.

-lineSpacingMultiplier: 줄 간격을 기본 줄 간격의 배수로 설정할 때 사용 (기본 값 1.0)

-lineSpacingExtra : 여유 값으로 설정할 떄 사용

 

 

 

4. 대소문자 표시 관련 속성

capitalize 속성을 이용해서 글자, 단어, 문장 단위로 대소문자를 조절할 수 있다.

"character", "word", "sentences"등을 지정할 수 있고 각각 글자, 단어, 문장 단위로 맨 앞 글자를 대문자로 표시할 수 있다.

 

 

 

5.줄임 표시 관련 속성

ellipsize 속성을 이용해서 입력한 내용의 생략 부분을 ...로 나타낼 수 있다.

디폴트 값인 "none"은 뒷부분을 자르고, "start", "middle", "end" 값으로 생략 부분을 설정할 수 있다.

 

maxLines 속성을 이용해 텍스트뷰를 한줄로 표시할 수도 있다.

 

 

 

6.힌트 표시 관련 속성

hint 속성을 사용해서 EditText에 어떤 내용을 입력하라고 안내해줄 수 있다.

색상 변경은 textColorHint 속성에서 가능하다.

 

 

 

7. 편집 가능 관련 속성

EditText에 입력 되어 있는 문자열을 편집하지 못하게 하고 싶다면 editable 속성을 "false"로 설정하면 된다.

디폴트는 "true"이다.

 

 

 

8.문자열 변경 처리 관련 속성

EditText에 입력된 문자를 확인하거나 입력된 문자가 필요한 포맷과 맞는지 확인할 때 getText() 메서드를 사용한다.

이 메서드가 리턴하는 것은 Editable 객체인데 이 객체의 toString() 메서드를 이용하면 일반 String 타입의 문자열을 확인할 수 있다.

 

TextChangedLinster를 통해 문자열이 사용자의 입력에 의해 바뀔 때마다 확인하는 기능을 넣을 수도 있다.

addTextChangedListener() 메서드를 사용하면 TextWatcher 객체를 설정할 수 있다.

이 객체는 텍스트가 변경될 때마다 발생하는 이벤트를 처리한다.

 

 

TextWatcher에는 다음과 같은 메서드들이 정의 되어 있다.

 edittext.addTextChangedListener(new TextWatcher() {     
						// addTextChangedListener 텍스트가 입력에 따라 변경될 때마다 확인하는 기능
            // TextWatcher 텍스트가 변경될 때마다 발생하는 이벤트 처리하는 인터페이스
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            public void afterTextChanged(Editable s) {}
        });
    }

문자열이 편집되기 전과 후, 그리고 편집된 정보를 확인할 수 있도록 안에 필요한 기능을 추가할 수 있다.

 

 

SMS 예제를 참고하면 TextWatcher를 이용해 글자수 세기 기능을 넣은 것을 확인할 수 있다.

 

 

 

 

## 이 글은 Do it 안드로이드 앱 프로그래밍을 참고해서 작성되었습니다.

도서에는 더 자세하고 알기 쉽게 설명이 되어 있어 도서를 참고하면서 공부하는 것을 추천드립니다.

도서 정보 : http://www.yes24.com/Product/Goods/15789466

 

Do it! 안드로이드 앱 프로그래밍

안드로이드 분야 1위 도서, 개정 2판으로 돌아오다! (롤리팝, 안드로이드 스튜디오)안드로이드 분야에서 큰 사랑을 받아온 [Do it! 안드로이드 앱 프로그래밍]의 두 번째 전면 개정판이 나왔다. 최신 롤리팝 버전을 적용한 이번 개정 2판은 지난 젤리빈 개정판보다 더 개정폭이 커졌다. 특히 2014년 12월 발표된 안드로이드 공식 개발 도구인 ‘안드...

www.yes24.com

유투브 강의 : https://www.youtube.com/watch?v=nN4xnEcnjE8

 

Comments