2012-08-23 15 views
74

Configuré una longitud máxima de texto en un campo EditText.Android EditText Max Length

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

El problema para mí es sin embargo, que, texto deja de aparecer después de 140 caracteres, pero todavía sigue escribiendo, excepto que sólo texto no aparece, pero sin embargo, sí aparece en el "buffer" (es decir, la sugerencia) si así es como lo llamarías.

Como nota al margen, estoy usando un TextWatcher para realizar un seguimiento del límite. ¿Hay alguna forma de limitar por completo la cantidad de texto, de modo que cuando hay 140 caracteres, no ocurre nada cuando se presiona algo que no sea el retroceso/eliminación?

Respuesta

89

duplicado Posible de Limit text length of EditText in Android

uso androide: maxLength = "140"

Eso debería funcionar. :)

Espero que ayude

+2

Tengo mismo problema, pero esto no es un trabajo para mí – Mansi

+0

Lo que está pasando en la tuya? haga una nueva pregunta y coloque su código en ella y lo echaré un vistazo. ponga un enlace a su pregunta aquí para que pueda encontrarlo –

+0

¡El mismo problema! ¿Hay una solución? – mrroboaat

36

Tuve el mismo problema.

Aquí es una solución

android:inputType="textNoSuggestions|textVisiblePassword" 
android:maxLength="6" 

Thx a How can I turnoff suggestions in EditText?

+0

Es curioso que la modificación de inputType permita que maxLength funcione correctamente, evitando que los usuarios escriban más búfer. Deseo que Google solucione esto. –

+0

Parece que solo se necesita textoNoSugerencias para eliminar letras al presionar la tecla de retroceso. –

+0

Esto es extraño, ¡me pregunto si Google sabe de este error! – Skynet

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

que tenía el mismo problema. Funciona perfectamente bien cuando se agrega esto:

android:inputType="textFilter" 

a su EditText.

+0

esta es la respuesta correcta. gracias –

0

Si usaste maxLength = 6, algunas veces lo que estás ingresando esos caracteres se agregan en la parte superior del teclado llamados sugerencias. Por lo tanto, cuando borre las letras ingresadas esa vez, eliminará las sugerencias primero y luego el texto real dentro de EditText. Para que usted necesita para eliminar el suggestions.just añadir

android:inputType="textNoSuggestions"` 

o

android:inputType="textFilter" 

Se eliminará esas sugerencias.

0

Para mí esta solución funciona:

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

Si desea ver una etiqueta de venta libre que se puede utilizar app:counterEnabled y android:maxLength, como:

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

NO conjunto app:counterMaxLength en TextInputLayout porque entrará en conflicto con android:maxLength dando como resultado la emisión de caracteres invisibles después de que el texto alcance el límite de tamaño.

1

Usted puede probar este

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