Android EditText Max Length

Я установил максимальную длину текста в поле EditText.

<EditText
            android:id="@+id/courseDescriptionField"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine"
            android:lines="5"
            android:maxLength="@integer/max_course_description_limit"
            android:gravity="left|top" >
        </EditText>

Однако проблема заключается в том, что текст STOPS появляется после 140 символов, но он по-прежнему продолжает печатать, за исключением того, что текст просто не отображается, но, однако, он появляется в "буфере" (что означает предложение вещь), если это то, что вы бы назвали.

Как примечание, я использую TextWatcher для отслеживания ограничения. Есть ли способ полностью ограничить количество текста, так что, когда есть 140 символов, ничего не происходит, если что-то другое, кроме нажатия или удаления?

Ответ 3

EditText editText= ....;
InputFilter[] fa= new InputFilter[1];
fa[0] = new InputFilter.LengthFilter(8);
editText.setFilters(fa);

Ответ 4

У меня была та же проблема. Он отлично работает, когда вы добавляете это:

android:inputType="textFilter"

на ваш EditText.

Ответ 5

Если вы использовали maxLength = 6, то несколько раз, когда вы вводите эти символы, в верхней части клавиатуры добавляются предложения. Поэтому, когда вы удаляете введенные буквы в это время, сначала удаляются предложения, а затем фактический текст внутри EditText. Для этого вам нужно удалить предложения. Просто добавьте

android:inputType="textNoSuggestions"` 

или

android:inputType="textFilter"

Он удалит эти предложения.

Ответ 6

Для меня это решение работает:

edittext.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

Ответ 7

Если вы хотите увидеть метку счетчика, вы можете использовать app:counterEnabled и android:maxLength, например:

<android.support.design.widget.TextInputLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  app:counterEnabled="true">

  <EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLength="420" />

</android.support.design.widget.TextInputLayout>

НЕ установите app:counterMaxLength на TextInputLayout, потому что он будет конфликтовать с android:maxLength, что приведет к проблеме невидимых символов после того, как текст достигнет предела размера.

Ответ 8

Вы можете попробовать это

 EditText et = (EditText) findViewById(R.id.myeditText);
    et.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(140) }); // maximum length is 140