Авто удалить пробел любого текста 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("");
}
}