Android deshabilita el espacio sólo para Edittext
En mi aplicación android necesito deshabilitar la barra espaciadora solamente. Pero no encontré una solución para este problema. Necesito inhabilitar la barra de espacio y cuando el usuario incorpora el espacio no debe trabajar, los caracteres especiales, las letras, los dígitos y todo el otro deben trabajar. Lo que intenté es,
etPass.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub String str = s.toString(); if(str.length() > 0 && str.contains(" ")) { etPass.setError("Space is not allowed"); etPass.setText(""); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } });
Pero el problema aquí es una vez que el espacio viene todo el texto está borrando. quite
- Ajustar EditText a una sola línea hace que pierda su foco después de presionar enter
- .length () vs .getText (). Length () vs .getText (). ToString (). Length ()
- Iterar a través de ListView y obtener valores de EditText-Field
- Cómo agregar EditText en listview y obtener su valor dinámicamente en todas las filas?
- Android: Cómo inhabilitar TOTALMENTE la función de copiar y pegar en Edittext
etPass.setText("");
Esta línea, por lo que en ese momento mensaje de error está mostrando, pero en ese momento el usuario todavía puede escribir espacio. Pero lo que necesito es que el usuario no pueda escribir el espacio.
- AfterTextChanged () se llama llamada de retorno sin que el texto se cambie realmente
- Cambiar el color de fondo de edittext en android
- Cómo cambiar el color predeterminado en todos los textos en mi aplicación de Android?
- Andtouide edittext minmum y valor máximo
- Android: EditText - varias líneas y android: inputType
- Fecha de EditarTexto
- EditText: Diferenciar entre cambio de texto por setText () o por entrada de teclado
- Detener EditText de obtener foco en inicio de actividad
¿Por qué no piensas en un filtro de caracteres .. He aquí un fragmento de código de ejemplo.
/* To restrict Space Bar in Keyboard */ 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; } }; input.setFilters(new InputFilter[] { filter });
Ella es la solución de trabajo para mí:
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890" android:inputType="textFilter"
Añadir en texto de edición en archivo xml
Esta versión apoya la entrada de las sugerencias del teclado con espacios.
InputFilter filter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { String filtered = ""; for (int i = start; i < end; i++) { char character = source.charAt(i); if (!Character.isWhitespace(character)) { filtered += character; } } return filtered; } }; input.setFilters(new InputFilter[] { filter });
EditText yourEditText = (EditText) findViewById(R.id.yourEditText); yourEditText.setFilters(new InputFilter[] { new InputFilter() { @Override public CharSequence filter(CharSequence cs, int start, int end, Spanned spanned, int dStart, int dEnd) { // TODO Auto-generated method stub if(cs.equals("")){ // for backspace return cs; } if(cs.toString().matches("[a-zA-Z]+")){ // here no space character return cs; } return ""; } } });
Para deshabilitar el uso del espacio
public boolean onKeyDown(int keyCode, KeyEvent event) { if (editclicked) { if (keyCode == KeyEvent.KEYCODE_SPACE) { return false } } else { super.onKeyDown(keyCode, event); } }
Simplemente reemplace esto en su código y debería funcionar perfectamente,
etPass.setText(etPass.getText().toString().replaceAll(" ",""));
Prueba esto
Usar android:digits
no incluyen "" (espacio en él)
<EditText android:inputType="number" android:digits="0123456789.abcdefghijklmnl....."// write character that you want to allow />
En lugar de etPass.setText("");
Sólo hay que eliminar el espacio de los datos de EditText
.
etPass.setText(etPass.getText().toString().trim()); etPass.setSelection(autoComplete.getText().length());
Por lo que su condición IF
será la siguiente:
if(str.length() > 0 && str.contains(" ")) { etPass.setError("Space is not allowed"); etPass.setText(etPass.getText().toString().trim()); etPass.setSelection(etPass.getText().length()); }
- ¿Cómo establecer el valor alfa para mi diseño Relativo?
- Programatically cambiar la altura del diseño, ClassCastException?