自动删除 EditText 任何文本的前导 space?
Auto remove leading space of any text of EditText?
描述
我正在开发一个有注册页面的应用程序。
在注册页面中,我通过获取用户的全名和手机号码进行注册。
问题
在编辑文本中获取用户全名时,有时用户会在输入 his/her 名称之前按 space 栏。
我需要你在输入任何文本之前禁用 space-bar 键 白色用户开始输入他的名字 我想启用 space-bar 键。这样用户就可以在 his/her Middle name 和 Last name 之间输入 space。
我试过什么?
回答
我在编辑文本时使用文本观察器。
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);
}
});
我在执行这段代码时遇到了什么问题?
当用户第一次按下时,它会突然自动移除 space。
但是当用户试图在全名之间输入 space 时,它会再次删除所有文本并显示空的编辑文本。
screen 1 while entering only space
Here I am entering my Name and want to enter last name or middle name of space
Here when I am entering space after my first name
使用此 trim()
方法删除 space 像这样..
String str = s.toString().trim();
使用trim()
方法去掉多余的space
user_name.getText().toString().trim()
.
并删除
if(str.length() > 0 && str.contains(" "))
{
user_name.setError("Space is not allowed");
user_name.setText("");
}
来自你的onTextChanged
要防止用户输入 space,请将此添加到您的 onTextChanged
if(str.equals(" "))
{
user_name.setError("Leading Space is not allowed");
user_name.setText("");
}
首先,试着理解他想做什么
他试图阻止用户在 space 前输入而不是在输入文本后输入。
他不想trim用户名
从
更新您的代码
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("");
}
它将阻止用户在名称
前键入任何 space
试试这个,检查是否 start == 0,它将不允许用户在名称前添加空格
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(start == 0 && s.toString().contains(" ")){
user_name.setText("");
}
}
描述
我正在开发一个有注册页面的应用程序。 在注册页面中,我通过获取用户的全名和手机号码进行注册。
问题
在编辑文本中获取用户全名时,有时用户会在输入 his/her 名称之前按 space 栏。
我需要你在输入任何文本之前禁用 space-bar 键 白色用户开始输入他的名字 我想启用 space-bar 键。这样用户就可以在 his/her Middle name 和 Last name 之间输入 space。
我试过什么?
回答
我在编辑文本时使用文本观察器。
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);
}
});
我在执行这段代码时遇到了什么问题?
当用户第一次按下时,它会突然自动移除 space。 但是当用户试图在全名之间输入 space 时,它会再次删除所有文本并显示空的编辑文本。
screen 1 while entering only space
Here I am entering my Name and want to enter last name or middle name of space
Here when I am entering space after my first name
使用此 trim()
方法删除 space 像这样..
String str = s.toString().trim();
使用trim()
方法去掉多余的space
user_name.getText().toString().trim()
.
并删除
if(str.length() > 0 && str.contains(" "))
{
user_name.setError("Space is not allowed");
user_name.setText("");
}
来自你的onTextChanged
要防止用户输入 space,请将此添加到您的 onTextChanged
if(str.equals(" "))
{
user_name.setError("Leading Space is not allowed");
user_name.setText("");
}
首先,试着理解他想做什么
他试图阻止用户在 space 前输入而不是在输入文本后输入。
他不想trim用户名
从
更新您的代码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("");
}
它将阻止用户在名称
前键入任何 space试试这个,检查是否 start == 0,它将不允许用户在名称前添加空格
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(start == 0 && s.toString().contains(" ")){
user_name.setText("");
}
}