2012-08-23 2 views
74

Ho impostato una lunghezza massima del testo in un campo EditText.Android EditText Lunghezza massima

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

Il problema per me però è che, il testo viene più visualizzato dopo 140 caratteri, ma si continua a digitare, ad eccezione proprio non sembra che il testo, ma tuttavia, non appare nella "buffer" (intendendo la cosa del suggerimento) se è quello che tu chiameresti.

Come nota a margine, sto utilizzando TextWatcher per tenere traccia del limite. C'è un modo per limitare completamente la quantità di testo, in modo che quando ci sono 140 caratteri, non accade nulla quando viene premuto qualcosa di diverso da backspace/delete?

risposta

89

Eventuali duplicati di Limit text length of EditText in Android

utilizzare Android: maxLength = "140"

che dovrebbe funzionare. :)

Speranza che aiuti

+2

Ho lo stesso problema, ma questo non è un lavoro per me – Mansi

+0

Che cosa sta succedendo nel tuo? fai una nuova domanda e metti il ​​tuo codice in esso e darò un'occhiata. metti un link alla tua domanda qui così posso trovarlo –

+0

stesso problema! C'è una soluzione? – mrroboaat

36

Ho avuto lo stesso problema.

Ecco una soluzione

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

Thx a How can I turnoff suggestions in EditText?

+0

È divertente che la modifica di inputType consenta a maxLength di funzionare correttamente, impedendo agli utenti di digitare più buffer. Vorrei che Google aggiustasse questo. –

+0

Sembra che solo testoNoSuggestions è necessario per eliminare le lettere quando si preme backkey. –

+0

Questo è strano, chiedo se Google conosce questo bug! – Skynet

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

Ho avuto lo stesso problema. Funziona perfettamente bene quando si aggiunge questo:

android:inputType="textFilter" 

al vostro EditText.

+0

questa è la risposta corretta. grazie –

0

Se si è utilizzato maxLength = 6, alcune volte ciò che si inserisce in quei caratteri viene aggiunto nella parte superiore della tastiera denominata suggerimenti. Pertanto, quando si eliminano le lettere immesse, tale tempo eliminerà prima i suggerimenti e quindi il testo effettivo all'interno di EditText. Per questo è necessario rimuovere il suggestions.just aggiungere

android:inputType="textNoSuggestions"` 

o

android:inputType="textFilter" 

Sarà rimuovere quei suggerimenti.

0

Per me questa soluzione funziona:

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

Se volete vedere un'etichetta contatore è possibile utilizzare app:counterEnabled e android:maxLength, come:

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

NON impostato app:counterMaxLength su TextInputLayout perché entrerà in conflitto con android:maxLength risultante nel problema dei caratteri invisibili dopo che il testo ha raggiunto il limite di dimensioni.

1

si può provare questa

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