Bagaimana Anda mengatur jumlah karakter maksimum untuk EditText di Android?

128

Bagaimana Anda mengatur jumlah karakter maksimum untuk input Android EditText? Saya melihat setMaxLines, setMaxEMS, tetapi tidak ada untuk jumlah karakter.

pembaca barcode
sumber
Juga, jawaban SO [di sini] [1] untuk mengatur panjang maks secara dinamis [1]: stackoverflow.com/a/4145983/530513
David O'Meara

Jawaban:

261

Dalam XML Anda dapat menambahkan baris ini ke EditText Viewtempat 140 adalah jumlah karakter maksimum:

android:maxLength="140"
Massimo Variolo
sumber
bisakah Anda menuntun saya bagaimana kami bisa mencapai ini dengan menggunakan tab properti di tampilan grafis xml eclipse?
Nitesh Verma
@NiteshVerma di file xml tata letak / tata letak Anda berikutnya '<LinearLayout .... <EditText android: maxLength = "20"'
Shell Scott
60

Secara dinamis:

editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(MAX_NUM) });

Melalui xml:

<EditText
    android:maxLength="@integer/max_edittext_length"
GoRGon
sumber
45

Anda dapat menggunakan InputFilter, seperti itu:

EditText myEditText = (EditText) findViewById(R.id.editText1);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(10); //Filter to 10 characters
myEditText .setFilters(filters);
Superlandero
sumber
7

Saya selalu mengatur maks seperti ini:

    <EditText
        android:id="@+id/edit_blaze_it
        android:layout_width="0dp"
        android:layout_height="@dimen/too_high"

    <!-- This is the line you need to write to set the max-->
        android:maxLength="420"
        />
ZooMagic
sumber
4

Ini bekerja untuk saya.

    etMsgDescription.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maximum_character)});

    etMsgDescription.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            tvCharacterLimite.setText(" "+String.valueOf(maximum_character - etMsgDescription.getText().length()));
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
Chirag
sumber
0

Ini bekerja untuk saya dengan cara ini, itu yang terbaik yang saya temukan. Panjang maksimum 200 karakter

editObservations.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if (editObservations.getText().length() >= 201){
                String str = editObservations.getText().toString().substring(0, 200);
                editObservations.setText(str);
                editObservations.setSelection(str.length());
        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
                                          int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});
Camilo Soto
sumber
0
   <EditText
        android:id="@+id/edtName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter device name"
        android:maxLength="10"
        android:inputType="textFilter"
        android:singleLine="true"/>

InputType harus mengatur "textFilter"

        android:inputType="textFilter"
Shetty Suresh Babu.
sumber
0

gunakan fungsi ini di mana saja dengan mudah:

 public static void setEditTextMaxLength(EditText editText, int length) {
    InputFilter[] FilterArray = new InputFilter[1];
    FilterArray[0] = new InputFilter.LengthFilter(length);
    editText.setFilters(FilterArray);
  }
Milad Mohamadi
sumber
0

Jalan Kotlin

editText.filters = arrayOf(InputFilter.LengthFilter(maxLength))
Vlad
sumber