본문 바로가기
개발/Android

[Android] 안드로이드 EditText 글자수 제한 방법

by blacktree 2023. 3. 7.
반응형

Android 앱에서 EditText는 사용자 입력을 받는 위젯으로 자주 사용된다. 그러나 EditText에 입력할 수 있는 글자수에 제한을 두는 경우가 있다. EditText에 글자수 제한을 설정하는 방법과 고려해야 할 사항을 살펴보자.

 

1. EditText 글자수 제한 방법

1.1 xml 속성 사용

EditText에 입력할 수 있는 길이를 xml 속성으로 제한할 수 있다. 이 방법은 가장 간단하고 쉽게 적용할 수 있다.

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLength="10" />

1.2 Java 코드로 제한 설정

EditText에 글자수 제한을 코드로 설정하는 방법이다. 코드를 이용하면 런타임 중에도 EditText의 글자수 제한을 동적으로 변경할 수 있다.

EditText editText = (EditText) findViewById(R.id.editText);
InputFilter[] filterArray = new InputFilter[1];
filterArray[0] = new InputFilter.LengthFilter(10);
editText.setFilters(filterArray);

1.3 TextWatcher를 이용한 제한 설정

EditText의 입력값을 지속적으로 감시하고, 글자수를 제한하는 방법이다. TextWatcher를 이용하여 글자수 제한을 구현할 수 있다.

EditText editText = (EditText) findViewById(R.id.editText);
editText.addTextChangedListener(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) {
        if (s.length() > 10) {
            editText.setText(s.subSequence(0, 10));
            editText.setSelection(10);
        }
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
});

2. EditText 글자수 제한 구현 시 고려사항

2.1 입력 가능한 문자 종류 제한

EditText에 입력할 수 있는 문자를 제한할 수 있다. 숫자만 입력 가능하도록 하는 등의 제한을 설정할 수 있다.

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:digits="0123456789" />

2.2 키보드 제한 설정

EditText에 표시되는 키보드의 종류를 제한할 수 있다. 숫자만 입력 가능한 경우에는 숫자 키패드를 표시하도록 설정할 수 있다.

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="number" />

2.3 에러 메시지 출력

EditText에 입력된 값이 제한을 벗어나면 사용자에게 알리는 메시지를 출력할 수 있다.

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLength="10"
    android:inputType="text" />
public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);
        editText.addTextChangedListener(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) {
                if (s.length() > 10) {
                    editText.setError("최대 10자까지 입력 가능합니다.");
                } else {
                    editText.setError(null);
                }
            }
            @Override
            public void afterTextChanged(Editable s) {
            }
        });
    }
}

 

이상으로 안드로이드 EditText에 입력할 수 있는 길이를 제한하는 방법에 대해 알아보았습니다. EditText에 입력할 수 있는 최대 길이를 설정하는 xml 속성과 TextWatcher를 이용하여 길이 제한과 에러 메시지 출력을 구현하는 방법을 살펴보았으며, 입력 가능한 문자 종류 제한과 키보드 제한 설정에 대한 내용도 다루어보았습니다.

EditText에 입력할 수 있는 길이를 제한하는 것은 사용자가 실수로 입력 오류를 발생시키는 것을 방지하고, 안정적인 앱 사용 경험을 제공하는 데 중요한 역할을 합니다. 따라서 앱 개발 시에는 EditText에 길이 제한을 설정하는 것을 고려해보는 것이 좋습니다.

앞으로도 안드로이드 앱 개발에 필요한 다양한 팁과 노하우를 함께 공유하겠습니다. 감사합니다.

728x90
반응형

댓글