Как можно ограничить ввод EditText специальным символом, таким как обратная косая черта (/), tild (~) и т. Д. С помощью программной клавиатуры в программном обеспечении Android

Я разрабатываю приложение для клавиатуры, но у меня проблема. Я хочу ограничить / заблокировать специальный символ с мягкой клавиатуры в EditText в программном обеспечении Android.

Итак, есть ли способ, которым я могу ограничить любой специальный ввод символов в тексте редактирования в android.

Если у кого есть идея, ответьте.

Заранее спасибо.

Solutions Collecting From Web of "Как можно ограничить ввод EditText специальным символом, таким как обратная косая черта (/), tild (~) и т. Д. С помощью программной клавиатуры в программном обеспечении Android"

Попробуйте, это может сработать для вас

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 }); } } 

Это должно работать:

 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}); 

Или, если вы предпочитаете простой способ:

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

Проверьте эту ссылку, которая показывает, как ограничить специальные символы в поле Android EditText?

Попробуйте этот код android:digits="abcde.....012345789" Я думаю, это самый простой способ сделать. Надеюсь, это поможет вам.

Вы можете создать регулярное выражение и проверить его на методе 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) {} }); 

Его поздно, но может быть полезно для других. Вместо программного, вы можете перейти с атрибутом xml. Возможно, в Single layout у вас есть много editText, из которых вы хотите ограничить специальные символы только одним EditText. Поэтому определение в xml поможет вам. Вот код для ограничения специальных символов, позволяя им вводить только алфавиты и цифры, как показано ниже

 <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"/> 

Если вы хотите добавить пробелы, вы можете дать пробел после последней цифры.

  android:digits="0123456789qwertzuiopasdfghjklyxcvbnm "