คุณตั้งค่าจำนวนอักขระสูงสุดสำหรับ EditText ใน Android ได้อย่างไร


128

คุณตั้งค่าจำนวนอักขระสูงสุดสำหรับอินพุต EditText ของ Android ได้อย่างไร ฉันเห็น setMaxLines, setMaxEMS แต่ไม่มีอะไรสำหรับจำนวนอักขระ


นอกจากนี้คำตอบ SO [ที่นี่] [1] เพื่อตั้งค่าความยาวสูงสุดแบบไดนามิก [1]: stackoverflow.com/a/4145983/530513
David O'Meara

คำตอบ:


261

ใน XML คุณสามารถเพิ่มบรรทัดนี้ในEditText Viewตำแหน่งที่ 140 เป็นจำนวนอักขระสูงสุด:

android:maxLength="140"

คุณช่วยแนะนำฉันว่าเราจะบรรลุสิ่งนี้ได้อย่างไรโดยใช้แท็บคุณสมบัติในมุมมองกราฟิก xml ของ eclipse
Nitesh Verma

@NiteshVerma ในไฟล์ xml res / layout ของคุณใส่ถัดไป '<LinearLayout .... <EditText android: maxLength = "20"'
Shell Scott


45

คุณสามารถใช้ InputFilter นั่นคือวิธี:

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);

7

ฉันตั้งค่าสูงสุดไว้เช่นนี้เสมอ:

    <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"
        />

4

มันทำงานให้ฉัน

    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

        }
    });

0

วิธีนี้ได้ผลสำหรับฉันดีที่สุดที่ฉันพบ มีความยาวสูงสุด 200 อักขระ

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) {
    }
});


0

ใช้ฟังก์ชันนี้ได้ทุกที่อย่างง่ายดาย:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.