모바일/안드로이드앱

EditText 기본위젯 다시보기/ Android Studio / 안드로이드 앱만들기 공부 11-2

yy_dd2 2021. 2. 21. 22:16
반응형

EditText

 

- EditText는 값을 입력받을 때 사용

- 글자를 입력하려고 커서를 옮기면 키패드가 화면에 나타남

- 한글, 영문, 숫자 등 입력하는 문자의 유형도 다양함 (그래서 조심해야한다고함 왜?)

- inputType 속성을 제공함 : 입력 문자의 유형 지정

- 안드로이드에서 글자를 복사하거나 붙여넣으려면 기본기능 그대로 사용 (글자 꾹누르기)

 

xml 코드에서는 EditText라고 작성

[Design]에서는 Text -> Plan Text 선택

<?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/editTextTextPersonName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="이름을 입력하세요"
        android:inputType="text"
        />
    <!-- 
    inputTuype : 입력되는 글자의 유형 정의 
    android:hint : 기본 안내글 hint
    -->
    
</LinearLayout>

 

주석 참고

 


+추가

텍스트뷰와 에디트텍스트의 다른기능들

 

커서, 자동링크, 줄 간격 조정, 대소문자 표시, 줄임 표시, 힌트 표시, 편집 기능, 문자열 변경처리

텍스트뷰와 에디트뷰가 같이 써져있으니 잘 확인하자

 

커서 관련 속성

에디트텍스트는 커서가 깜박이는 동작이 있다.

에디트텍스트의 커서 위치는 입력된 문자열의 마지막 지점으로 이동하도록 되어 있다.

- selectAllOnFocus 속성을 true 로 설정하면사용자가 에디트텍스트를 선택할 댸마다 전체 내용을 수정할 수 있도록 편의를 제공할 수 있다

- 커서를 보이지 않게 하려면 cursorVisible 속성을 false 값으로 설정

- 커서를 사용할때 문자열을 선택,복사,잘라내기 등 기능을 만들때 사용하는 메서드

(보통 에디트텍스트를 길게 눌러 복사,잘라내기 등의 작업을 할 수 있는데 그 기능을 만들때 메서드를 사용한다)

 

- public int getSelectionStart()

  선택영역의 시작위치를 알려준다

- public int getSelectionEnd()

  선택영역 위치의 끝을 알려준다

 

- public void setSelection(int start, int stop)

  선택영억을 지정하는데 사용한다

- public void extendSelection(int index)

- extendSelection(선택영역확장)

  선택영역을 확장하는데 사용한다

 

public void selectAll()

전체 문자열이 선택된다

 

 

자동 링크 관련 속성

- autoLink 속성을 true로 설정하면 문서에 있는 링크들을 알아서 설정해준다.

  (링크색상으로 바뀌고 누르면 접속시켜줌) 

- 메일 링크도 자동으로 연결해준다

 

줄 간격 조정 관련 속성

- 텍스트뷰의 줄 간격을 조절함

- lineSpacinMultiplier (비율값)와 lineSpacingExtra (고정값)로 설정 가능함

** 책에 있는것으로 설명이 너무 부족하다 어쉽게 안되어있어서 검색해봤다 그리고 내용을 내가보기 쉽게 정리했다

leipiel.tistory.com/10

 

[안드로이드 디자인]텍스트 줄 간격 설정에 대한 가이드는?(lineSpacing)

문자를 이용하여 디자인하는 것이란 문자 자체가 주는 아름다움만을 말하는 것이 아니라 전달의 한 수단으로써 활자의 기능을 보다 효율적으로 활용하기 위한 구도나 배치 등을 함께 고려하여

leipiel.tistory.com

1. lineSpacingExtra

- 고정 간격 값

- CSS로 비교 line-height : 10px; 값을 준 것과 같음

- 기본 단위는 dip

- 텍스트가 기본적으로 가지고 있는 높이 값에 입력받은 값을 더하면 그것이 한 줄의 높이 값이 된다.

[텍스트의 높이 값] + [입력받은 간격 값] = [한 줄의 높이 값]

 

결과 : 이 설정으로 조정하게 되면 텍스트 사이즈가 커지더라도

        간격 값은 고정이기 때문에 텍스트 크기에 따라 값도 변동되어야 한다.

 

2. lineSpacingMultiplier

- 가변 값

- CSS로 비교 line-height : 135%; 값을 준 것과 같음

- 1이 텍스트의 높이 값 100%를 말한다. 1.3을 입력하면 현재 텍스트 높이의 130% 값을 가지게 된다. 

[텍스트의 높이 값] x [입력받은 값] = [한 줄의 높이 값]

 

결과 : 이 설정으로 조정하게 되면 텍스트 사이즈가 커짐에 따라 간격 값도 늘어나고

        작아질 수록 간격 값도 상대적으로 줄어든다.

 

고정 값으로, 비율 값으로 줄 간격을 조정할 수 있다는 것을 기억하자.

 

 

대소문자 표시 관련 속성

captialize 속성을 사용하면 소문자로 작성된 글을 대문자로 변경해준다

- android:capitalize - 알파벳 소문자 입력 시 대문자 자동 변환.

-  none, sentences, words, characters 값 사용 가능.

- 기본 값은 none.

- none (0) : 자동 대문자 변환 사용 안함.

- sentences (1) : 각 문장의 첫 번째 단어를 대문자로 변환.

- words (2) : 각 단어의 첫 번째 글자를 대문자로 변환.

- characters (3) : 모든 글자를 대문자로 변환.

 

> inputType 속성으로 대체. 

capitalize 속성 값 inputType 속성 값
none inputType 사용 안함 또는 inputType="text"
sentences inputType="textCapSentences"
words inputType="textCapWords"
characters inputType="textCapCharacters"

 

 

줄임 표시 관련 속성

텍스트뷰에 많은 문자를 입력하면 입력한 애용의 뒷부분은 잘리고 말줄임표(...)로 표히된다

이때 ellipsize 속성을 사용하면 입력한 내용의 생략 부분을 설정할 수 있다.

(보통은 singleLine 속성에 true를 쓰고 같이 쓴다고한다 maxLines 의 값 1로 해서 사용가능

- 기본 값은 none

- none : 화면을 벗어나는 부분을 잘라낸다

- start : 앞부분에서 (...)

- middle : 중간에서 (...)

- end : 끝에서 (...)

- marquee : 흐르는 표시

 

 

힌트 표시 관련 속성

android:hint=""

- 힌트 색상도 변경이 가능함 android:textColorHint=""

 

편집 가능 관련 속성

에디트에서 입력된 문자열을 편집하지 못하게 할 때

 

- android:enabled="false" 로 설정

- textView에서 editable 속성값을 false로 변경하라고 하는데 이제 사용되지 않음

editable 을 사용하는데 API Level 3에서 이제 더이상 사용하지 않는다고함

 

 

문자열 변경 처리 관련 속성

- getText() : 에디트텍스트에 작성된 문자를 확인하거나 입력된 문자가 필요한 포맷과 맞는지 확인할 때 사용

- getText()가 리턴하는 것은 Editable인데 이 객체의 toString() 메서드를 이용하면 일반 String 타입 확인가능

 

- pubilc void addTextChangedListener(TextWatcher watcher)

  문자열이 사용자 입력에 의해 바뀔 때마다 확인하는 기능

 

- addTextChangedListenet() 메서드를 사용하면 TextWatcher 객체 설정 가능

 

- TextWatcher 객체

  텍스트가 변경될 떄마다 발생하는 이벤트 처리

- public void beforeTextChanged (CharSequence s, int start, int count, int after)

  텍스트 변경 전

- public void afterTextChanged (Editalbe s)

  텍스트 변경 시

- public void onTextChanged (CharSequence s, int start, int before, int count)

 

** 입력된 문자열의 길이 값 확인

setFilters() 메서드를 사용해서 InputFilter 객체를 파라미터로 전달

LengthFilter() 메서드 호출하면 입력될 문자열의 길이 값을 설정 할 수 있다

// 문자 수를 80자로 제한
InputFilter lengthFilter = new InputFilter.LengthFilter(80);

// 필터를 설정
InputFilter[] filters= new InputFilter[]{lengthFilter};

// 필터를 적용
editText.setFilters(filters);

setFilters() 를 사용해서 InputFilter 객체를 파라미터 값으로 전달하고

객체의 LengthFilter() 메서드를 호출하면 입력될 문자열의 길이 값을 설정할 수 있다

 

 

반응형