본문 바로가기

Android App/Tip

[Android/Tip] EditText 입력 텍스트 최대 길이 제한하기 (Limit maximum text length of EditText)

XML에서 설정하기 (maxLength)

EditText view의 속성으로 "android:maxLength"를 추가하여 원하는 길이의 값을 넣어주면 된다.

아래는 10글자로 제한한 EditText의 예제이다. 

<EditText
    android:id="@+id/edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:hint="입력해주세요."
    android:textColorHint="#9E9E9E"
    android:textColor="#000000"
    android:textSize="20dp"
    android:singleLine="true"
    android:maxLength="10"/>

프로그래밍 방식으로 설정하기 (InputFilter)

하나의 EditText를 사용하는데, 입력 텍스트 최대 길이를 상황에 따라서 다르게 해야 할 때가 있다.
이 때는 Java나 Kotiln으로 프로그래밍하여 최대 길이를 설정하려고 할 것이다.
하지만 EditText 클래스에는 setMaxLength와 같이 입력 텍스트 최대 길이를 설정할 수 있는 함수를 제공하지 않는다.

이때 사용할 수 있는 것이 InputFilter이다.
InputFilter.LengthFilter로 최대 길이를 설정하여 InputFilter를 생성하고, 이를 EditText의 setFilters로 설정해주면 된다.
참고로, XML에서 EditText의 maxLength를 설정하면, 내부적으로 InputFilter가 동작한다.

InputFilter를 사용하여 10글자로 제한한 Java 코드 예제는 다음과 같다.

int maxLength = 10;

EditText editText = (EditText) findViewById(R.id.edittext);
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});

 

Kotiln 예제 코드는 다음과 같다.

val maxLength = 10;

val editText = findViewById<EditText>(R.id.edittext)
editText.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(maxLength))

 

*참고한 글

 

What's the best way to limit text length of EditText in Android

What's the best way to limit the text length of an EditText in Android? Is there a way to do this via xml?

stackoverflow.com