Авто удалить пробел любого текста EditText?

Описание

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

проблема

При получении полного имени пользователя в редактируемом тексте пользователь иногда нажимает клавишу пробела, прежде чем ввести свое имя.

Мне нужно, чтобы вы отключили клавишу пробела, прежде чем вводить какой-либо текст. Белый пользователь начинает вводить его имя. Я хочу включить клавишу пробела. Таким образом, пользователь может ввести пробел между своим отчеством и фамилией.

Что я пробовал?

Ответ

Я использую наблюдателя текста в редактировании текста.

user_name.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                inputLayoutname.setError(null);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                System.out.println(TAG+" s :"+s+ " start :"+start+" Before : "+before+" Count: "+count);
                String str = s.toString();

                if(str.length() > 0 && str.contains(" "))
                {
                    user_name.setError("Space is not allowed");
                    user_name.setText("");
                }
            }

            @Override
            public void afterTextChanged(Editable s) {    

                if (user_name.getText().length() > 0)
                    inputLayoutname.setError(null);
            }
        });

Какие проблемы возникают, когда я реализую этот код?

Когда пользователь нажимает в первую очередь, он автоматически удаляет пробел внезапно. Но когда пользователь пытается ввести пробел между полным именем, он снова удаляет весь текст и показывает пустой текст редактирования.

экран 1 при вводе только пробел введите описание изображения здесь

Здесь я ввожу свое имя и хочу ввести фамилию или отчество введите описание изображения здесь

Здесь, когда я вхожу в пространство после моего имени введите описание изображения здесь

4 ответа

Решение

Сначала попытайтесь понять, что он пытается сделать

Он пытается запретить пользователю вводить начальные пробелы, а не после ввода текста.

Он не хочет обрезать имя пользователя

Обновите ваш код от

if(str.length() > 0 && str.contains(" "))
                {
                    user_name.setError("Space is not allowed");
                    user_name.setText("");
                }

в

if(str.equals(" "))
                {
                    user_name.setError("Leading Space is not allowed");
                    user_name.setText("");
                }

Это предотвратит ввод текста пользователем перед именем

Использование trim() способ убрать лишнее пространство

user_name.getText().toString().trim(),

И удалить

if(str.length() > 0 && str.contains(" "))
                {
                    user_name.setError("Space is not allowed");
                    user_name.setText("");
                }

от твоего onTextChanged

Чтобы пользователь не мог войти в пространство, добавьте это на onTextChanged

if(str.equals(" "))
                {
                    user_name.setError("Leading Space is not allowed");
                    user_name.setText("");
                }

Использовать этот trim() метод, чтобы удалить пространство, как это..

String str = s.toString().trim();

Попробуйте это, проверьте, если start == 0, это не позволит пользователю добавлять пробелы перед именем

@Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(start == 0 && s.toString().contains(" ")){
                user_name.setText("");
            }
        }
Другие вопросы по тегам