valor texto studio seleccionar salto que obtener mascara linea fondo edittext como color cambiar ancho android android-edittext character android-softkeyboard

texto - ¿Cómo puedo restringir mi entrada de EditText a algún carácter especial como la barra invertida(/), tild(~) etc. mediante el teclado en Android programáticamente?



seleccionar texto edittext android (9)

Es tarde pero puede ser útil para otros. En lugar de programáticamente, puede ir con el atributo xml. Puede ser que en Single layout tenga muchos editText, de los cuales solo puede restringir los caracteres especiales en un EditText. Definir en xml te ayudará. Aquí está el código para restringir los caracteres especiales al permitirles ingresar solo alfabetos y números como a continuación

<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="@dimen/text10" android:singleLine="true" android:maxLines="1" android:maxLength="16" android:digits="abcdefghijklmnopqrstuvwxyz0123456789"/>

Estoy desarrollando una aplicación para teclado, pero estoy generando un problema. Quiero restringir / bloquear algunos caracteres especiales desde el teclado virtual en EditText en Android programáticamente.

Entonces, ¿hay alguna manera de restringir cualquier entrada de caracteres especiales en editar texto en Android?

Si alguien tiene una idea, responda.

Gracias por adelantado.


Esto debería funcionar:

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.isLetterOrDigit(source.charAt(i))) { return ""; } } return null; } }; edit.setFilters(new InputFilter[]{filter});

O si prefiere la manera fácil:

<EditText android:inputType="text" android:digits="0123456789*,qwertzuiopasdfghjklyxcvbnm" />


Para aquellos que podrían estar enfrentando problemas al agregar espacio, agregue un espacio en blanco con todos los alfabetos. A continuación se muestra un ejemplo. También debe saber que el usuario no podrá agregar una nueva línea en este caso.

<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:digits="0123456789,a bcdefghijklmnopqrstuvwxyz" android:maxLines="1" android:singleLine="true" />


Primero necesita agregar DigitsKeyListener para permitir caracteres y luego configurarRawInputType para editar el campo de texto

edit_field.setKeyListener(DigitsKeyListener.getInstance("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); edit_field.setRawInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);


Pruebe esto puede funcionar para usted

public class MainActivity extends Activity { private EditText editText; private String blockCharacterSet = "~#^|$%&*!"; private InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (source != null && blockCharacterSet.contains(("" + source))) { return ""; } return null; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); editText.setFilters(new InputFilter[] { filter }); } }


Puede crear expresiones regulares y verificarlas en el método OnTextChanged

yourEditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { // you can call or do what you want with your EditText here yourEditText. ... } public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) {} });


Puede evitar escribir caracteres especiales:

yourEditText.addTextChangedListener(new TextWatcher() { CharSequence previous; public void afterTextChanged(Editable s) { if(s.toString().contains("&^%$#*&(")){ s.clear(); s.append(previous.toString()); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { previous = s; } public void onTextChanged(CharSequence s, int start, int before, int count) {} });


Si desea agregar espacios, puede dar espacio después del último dígito.

android:digits="0123456789qwertzuiopasdfghjklyxcvbnm "


revisa this enlace que muestra Cómo restringir los caracteres especiales de un campo EditText de Android?

Pruebe este código android:digits="abcde.....012345789" supongo que esta es la forma más fácil de hacerlo. Espero que esto lo ayude.