EditText 기본위젯 다시보기/ Android Studio / 안드로이드 앱만들기 공부 11-2
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 (고정값)로 설정 가능함
** 책에 있는것으로 설명이 너무 부족하다 어쉽게 안되어있어서 검색해봤다 그리고 내용을 내가보기 쉽게 정리했다
[안드로이드 디자인]텍스트 줄 간격 설정에 대한 가이드는?(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() 메서드를 호출하면 입력될 문자열의 길이 값을 설정할 수 있다