2010-03-17 4 views

risposta

290

Dovrebbe essere qualcosa del genere. ma mai usato per TextView, solo EditText:

TextView tv = new TextView(this); 
int maxLength = 10; 
InputFilter[] fArray = new InputFilter[1]; 
fArray[0] = new InputFilter.LengthFilter(maxLength); 
tv.setFilters(fArray); 
+104

edificio su quella, potrebbe essere molto più pulito di andare: tv.setFilters (nuova InputFilter [] {nuovo InputFilter.LengthFilter (10)}); –

+0

questo ha funzionato per me – adrian4aes

+16

Non potevo semplicemente dire "maxLength()" .. no, no, no .. sarebbe troppo facile. dovevano renderlo astratto .. yay! – giulio

52

Prova questa

int maxLengthofEditText = 4;  
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)}); 
+1

Questo funziona per me, ma in Android 5.1 puoi ancora continuare a digitare lettere, sono solo "invisibili" nel campo di input. Ma sono mostrati nella proposta di testo. E quando provi a cancellare le lettere alla fine. – Radon8472

+7

Questo non è "un altro modo" questa è la versione breve della prima risposta, allo stesso modo. –

8

Modo semplice limite di caratteri modificare il testo:

EditText ed=(EditText)findViewById(R.id.edittxt); 
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)}); 
4

Per quelli di voi che usano Kotlin

fun EditText.limitLength(maxLength: Int) { 
    filters = arrayOf(InputFilter.LengthFilter(maxLength)) 
} 

Poi si può semplicemente utilizzare un semplice editText.limitLength (10)

+0

perché non utilizzare setMaxLength come nome funzione? è possibile applicare questo a textview anche ... grazie +1 :) – crgarridos

+0

Ho altri metodi che seguono questo modello: limitDecimalPlaces, limitNumberOnly, limitAscii per andare insieme a limitLength. – Kevin

0
 AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Title"); 


        final EditText input = new EditText(this); 
        input.setInputType(InputType.TYPE_CLASS_NUMBER); 
//for Limit...      
input.setFilters(new InputFilter[] {new InputFilter.LengthFilter(3)}); 
        builder.setView(input);