2016-07-28 3 views
4

J'ai créé EditText avec les éléments suivants.Désactiver la touche ESPACE dans EditText android

<EditText 
     android:id="@+id/et_regis_num" 
     android:maxLines="1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:digits="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
     android:hint="@string/txt_reg_num" 
     android:inputType="textCapCharacters" 
     android:maxLength="10" /> 

dans ce edittext Je ne veux pas appuyer sur la touche ESPACE mais quand je suis appuyant sur la touche ESPACE, il travaille en tant que BACKSPACE. signifie qu'il supprime un caractère dans chaque double pression.

+2

N'avez pas reçu votre question. Est-ce que ceci (l'espace fonctionnant comme backspace) est le comportement actuel ou le comportement attendu? –

+0

Vous pouvez définir des filtres d'entrée comme mentionné dans ce message http://stackoverflow.com/questions/33993041/android-disable-space-only-for-edittext –

+0

@IshitaSinha d'accord – eLemEnt

Répondre

2

juste laisser l'espace dans votre edittext et remplacer l'espace vide avec,

@Override 
    public void afterTextChanged(Editable s) { 
    String result = s.toString().replaceAll(" ", ""); 
    if (!s.toString().equals(result)) { 
     ed.setText(result); 
     ed.setSelection(result.length()); 
     // alert the user 
    } 
} 
+0

avez-vous essayé si j'ai déjà mentionné Android: chiffres. Donc l'espace ne sera pas considéré ici. –

+0

avez-vous essayé d'ajouter comme cet androïde: chiffres = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ" dans xml –

+0

j'ai essayé comme ça et afterTextChanged –

3

Set InputFilter sur EditText. S'il vous plaît vérifier ci-dessous répondre à ça a fonctionné pour moi.

InputFilter filter = new InputFilter() { 
    public CharSequence filter(CharSequence source, int start, int end, 
     Spanned dest, int dstart, int dend) { 
     for (int i = start; i < end; i++) { 
      if (Character.isWhitespace(source.charAt(i))) { 
       return ""; 
      } 
     } 
     return null; 
    } 
}; 

edtTxt.setFilters(new InputFilter[] { filter }); 
+0

Cette approche a l'effet secondaire très étrange (si les suggestions sont activées pour cet EditText) - tapant les déclenchements d'espace comme le retour arrière. Le 1er espace entré à la fin de EditText filtre réellement, mais les tapements d'espace suivants fonctionnent comme l'effacement arrière effaçant le texte entré qui est totalement étrange. Pour éviter cet effet secondaire, vous pouvez utiliser inputType = "textVisiblePassword" - avec cette solution de contournement, cela fonctionnera. – Stan