EditText(에디트텍스트) 속성 모든것(1)
EditText(에디트텍스트)
속성의 모든 것(1)
ㆍ이번에는 가장 많이 사용하는 위젯 중 하나인 EditText에
대해 써보려고 합니다.
맨 처음 타이틀 적을때는 속성을 빼고 EditText의 모든것!
이라고 했다가..
모든 것이라고 하면 (이건 나중에 관련글을 따로 쓸 거 같지만)
왠지 windowSoftInputMode에 관한것도 전부 써야할 느낌이라.
(이건 나중에 키보드 올라올때 UI변경관련 등의 내용입니다)
그냥 속성이라는 말을 붙였습니다.
EditText란?
EditText는 우리말로 변환하면
입력상자정도가 어울릴 것 같습니다
사용자가 어떤 정보의 입력이 필요할때
그 공간을 만들어주는 위젯입니다.
EditText는 게임앱을 제외하면
거의 모든 앱에서 들어가는 위젯입니다.
게임앱이라고 말한 이유는
뭐 랭킹등록 이런걸 제외하면
거의 쓰이지 않고
쓰인다 해도 게임앱은 거의
게임툴로 개발하기 때문에
제외라고 적었습니다.
EditText는 아주 사용하기
쉽기 때문에 이런내용은
대충 넘어가고 바로
속성을 하나씩 넣어가면서
써보도록 하겠습니다
EditText 생성
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
다른 위젯과 마찬가지로
기본 width, height만
적어주면 생성이 됩니다.
현재 width가 wrap_content로
한글자도 없기 때문에
아래 그림처럼
아주 작은 공간을 차지합니다
hint
hint는 사용자가
EditText의 넣어야 하는
입력내용을 미리 알려주는
속성입니다.
[xml]
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="이름을 입력하세요"
/>
[java]
EditText et = (EditText) findViewById(R.id.et);
et.setHint("이름을 입력하세요");
textColorHint
textColorHint는
위에서 사용한 hint의
색깔입니다.
위 사진은 극단적으로
빨간색을 넣어봤습니다.
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="이름을 입력하세요"
android:textColorHint="#ff0000"
/>
[java]
et = (EditText) findViewById(R.id.et);
et.setHint("이름을 입력하세요");
et.setHintTextColor(Color.parseColor("#ff0000"));
maxLength
maxLength는 최대입력가능한
길이입니다.
위 사진은 "10"으로 설정한 상태여서
딱 10글자가 들어간 상태입니다
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="이름을 입력하세요"
android:maxLength="10"
/>
[java]
EditText et = (EditText) findViewById(R.id.et);
InputFilter[] EditFilter = new InputFilter[1];
EditFilter[0] = new InputFilter.LengthFilter(10);
et.setFilters(EditFilter);
background
아래 밑줄을 없애는 방법이다(@null)
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="이름을 입력하세요"
android:background="@null"
/>
[java]
EditText et = (EditText) findViewById(R.id.et);
et.setBackground(null);
focusable
앱이 실행되었을때
처음 포커스 주는곳을
설정 할 수 있다.
기본 디폴트라면
앱이 실행될 때
이름을 입력하세요에
포커스가 갈 것이다.
위 사진같이 하기 위해서는
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="이름을 입력하세요"
android:focusable="false"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="나이를 입력하세요"
android:focusable="true"/>
[java]
EditText et = (EditText) findViewById(R.id.et);
et.setFocusable(false);
EditText et2 = (EditText) findViewById(R.id.et2);
et2.setFocusable(true);
이게 정석이고
간편하게 et에만
false를 넣고 et2에는
아무것도 안적어도
et2에 포커스가 가게 된다
위와 같이 아에 포커스를
안주려면
et, et2 둘 다 false를 넣어주면
된다.
inputType
숫자 타입
inputType은
사용자가 입력을 위해
EditText를 선택했을때
키보드에 type을
강제적으로 부여하여
필요한 type만 입력가능하게
할 수 있습니다
나이를 입력하는
EditText에서는
숫자만 필요합니다
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="나이를 입력하세요"
android:inputType="number"
/>
[java]
EditText et = (EditText) findViewById(R.id.et);
et.setInputType(InputType.TYPE_CLASS_NUMBER);
비밀번호 타입
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="비밀번호를 입력하세요"
android:inputType="textPassword"
/>
[java]
EditText et = (EditText) findViewById(R.id.et);
et.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
et.setTransformationMethod(PasswordTransformationMethod.getInstance());
E-mail 타입
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="이메일을 입력하세요"
android:inputType="textEmailAddress"
/>
[java]
EditText et = (EditText) findViewById(R.id.et);
et.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
Type을 전부
설명하기에는
그 부분만 따로
글을 써야 될정도이므로
자주쓰이는
몇개만 적었습니다
cursorVisible
cursorVisible은
커서 깜빡깜빡 거리는거
그걸 보여주냐 마느냐 입니다
기본은 true입니다
만약 보기 싫다면
false로 바꿔주면 됩니다.
[xml]
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="이메일을 입력하세요"
android:cursorVisible="false"
/>
[java]
EditText et = (EditText) findViewById(R.id.et);
et.setCursorVisible(false);
enable
enable은
말그대로 EditText의
사용여부인데
true,false로 제어가
가능합니다.
xml에서는 처음부터 false
넣을일이 거의 없을거라
생각합니다.
java코드에서만
거의 쓰는데
여기서도 상황,조건에 따라
코드가 다르므로
간단한
예를 하나 들어서 써보겠습니다.
조건)
EditText에 5글자가 들어오면
입력을 막아라
이런식으로 짜볼까요?
TextWatcher로 추가로 써보겠습니다
[java]
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.et);
et.addTextChangedListener(etTextWatcher);
}
TextWatcher etTextWatcher = new TextWatcher()
{
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s)
{
if(s.length()==5)
{
et.setEnabled(false);
}
}
};
여기까지가 기본적으로
많이 사용하는 속성들입니다.
SingLine 같은 기본속성들이 빠지긴 했는데
2편에서 넣어보도록 하겠습니다
2편에서는 java, xml말고 manifest에서도
설정가능한 부분. 아마 키보드관련해서
대부분 쓰게 될 것 같습니다.
'안드로이드(android) > 위젯(Widget)' 카테고리의 다른 글
TextView, Button 등등 Focus 주기 (0) | 2016.11.22 |
---|---|
Switch(스위치) 커스텀해서 사용하기 (2) | 2016.10.27 |
TextView 특정문자열 색깔넣기(setSpan, html) (1) | 2016.10.23 |
EditText 키보드 다음, 완료버튼 등등 만들기(ImeOptions) (1) | 2016.06.13 |
Button 이벤트 (0) | 2016.03.24 |