Intereting Posts
Как переопределить (или скрыть) атрибуты стиля, определенные в проекте библиотеки Android? Видеовидео и Полноэкранные и Ориентационные изменения – Android Приложение Google Messenger не прикрепляет изображение при отправке MMS Принуждение adjustPan в активности, содержащей ScrollView Как читать данные из файла XLS (Excel) Android Studio: как создавать быстрые клоны или копии текущего проекта Как создать навигационное меню библиотеки поддержки дизайна? Как сгенерировать подписанный и неподписанный APK с использованием градиента? Могу ли я подчеркнуть текст в макете Android? Как программно отключить «масштаб анимации окон» на устройствах Android 4.0+? Использование библиотеки Closure в приложении Phonegap (Android) Maven vs Ant для автоматической сборки в приложениях для Android Как запустить консоль «telnet» в эмуляторе устройства Android Studio? Ошибка запуска Eclipse при попытке запустить приложение для Android Как удалить SingleTask-активность с помощью taskAffinity из последних задач, когда она будет завершена?

Android отключает пространство только для Edittext

В моем приложении для Android мне нужно отключить только пробел. Но я не нашел решения для этой проблемы. Мне нужно отключить пробел, и когда пользователь вводит пробел, он не должен работать, должны работать специальные символы, буквы, цифры и все остальные. То, что я пробовал,

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

Но проблема здесь в том, что после пробела весь текст удаляется. Я удалил

 etPass.setText(""); 

Эта строка, поэтому в это время появляется сообщение об ошибке, но в это время пользователь все еще может ввести пробел. Но мне нужно, чтобы пользователь не мог ввести пробел.

Solutions Collecting From Web of "Android отключает пространство только для Edittext"

Почему бы вам не подумать о символьном фильтре. Вот пример фрагмента кода.

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

Ее решение для меня:

 android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890" android:inputType="textFilter" 

Добавьте его в текст редактирования в xml-файле

Эта версия поддерживает ввод предложений клавиатуры с пробелами.

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

Чтобы отключить использование пространства

 public boolean onKeyDown(int keyCode, KeyEvent event) { if (editclicked) { if (keyCode == KeyEvent.KEYCODE_SPACE) { return false } } else { super.onKeyDown(keyCode, event); } } 

Просто замените это в своем коде, и он должен работать отлично,

 etPass.setText(etPass.getText().toString().replaceAll(" ","")); 

Попробуй это

Использовать android:digits не включают "" (пробел в нем)

 <EditText android:inputType="number" android:digits="0123456789.abcdefghijklmnl....."// write character that you want to allow /> 

Вместо etPass.setText(""); Просто удалите пробел из данных EditText .

 etPass.setText(etPass.getText().toString().trim()); etPass.setSelection(autoComplete.getText().length()); 

Поэтому ваше условие IF будет выглядеть следующим образом:

 if(str.length() > 0 && str.contains(" ")) { etPass.setError("Space is not allowed"); etPass.setText(etPass.getText().toString().trim()); etPass.setSelection(etPass.getText().length()); }