2012-06-15 8 views
12

Ho un numero di campi EditText su un'app Android e ho utilizzato Android: cifre per bloccare l'immissione di caratteri non validi.Utilizzo di Android: l'attributo Digits per limitare i caratteri interrompe l'azione sul pulsante successivo funzionante

esempio: android:digits="@string/validchars" (dove "validchars" è una risorsa di stringa di tutti i caratteri validi - ad esempio, AZ, 0-9, e alcuni segni di punteggiatura)

Il problema è che, se l'utente preme il tasto INVIO sulla tastiera morbida che usava per portarli al campo successivo ma da quando ho aggiunto Android: bit di cifre questo ha smesso di funzionare. Ho provato ad aggiungere \ n allo validchars, ma ciò consente solo il ritorno a capo nelle caselle di testo a riga singola (!), Quindi non aiuta. Ho provato a giocherellare con imeOptions (aggiungendo actionNext ecc.) Ma questo non sembra risolvere il problema. Ho letto su TextWatchers e InputFilters, ma entrambi sembrano essere troppo complicati per quello che sto cercando di fare e il android:digits bit funziona perfettamente nell'arresto dei caratteri non validi.

Qualcuno ha qualche idea?

Sto utilizzando Android SDK versione 8 e destinato sia a dispositivi 2.2 che 2.3.5.

risposta

22

Dopo un po 'di spiccioli con gli attributi disponibili per un EditText ho scoperto che quando aggiungo android: singleLine = "true" il tasto ENTER ora sposta lo stato attivo sul campo successivo, anche quando un androide: le cifre sono limitanti i personaggi sono entrati Problema risolto! (per me, comunque!)

+0

In alternativa, se l'utente desidera avere un'opzione "completata" anziché successiva, vedere questa domanda, che è correlata http://stackoverflow.com/questions/1919742/android-editview- done-button – CrimsonX

+0

android: singleLine deprecated = (è un altro modo? –

+0

Credo che ora dovresti usare maxLines = "1" – Buzby

Problemi correlati