在 android 中输入第一个字符后立即输入字符
Enter character immediately after entering first character in android
我有一个 editText 和 inputType 作为 phone 数字。我想在输入第一个数字后立即添加特定的区号。比如说
我输入 6,EditText 应该显示 +1 6。
我正在尝试使用 textWatcher 实现此目的,但不确定如何将我键入的数字放在“+1”之后
public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
numberText.settext("+1");
numberText.setSelection(numberText.getText().length());
}
}
但这里的问题是,当我输入第一个数字时,+1 被填充,但通过键盘输入的数字没有显示。我不确定这里有什么问题?
此外,当我返回space 并从文本中删除 1 时,会发生这种情况,但我无法删除 +(这会自动填充)。我不想在填充 +1 后返回 space 时删除 +1。
这可能吗,如果可能怎么办?
谢谢!
替换
numberText.settext("+1");
和
numberText.settext("+1" + s.toString());
您没有正确更新现有文本。
使用这个:
public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
String text = numberText.getText().toString();
numberText.settext("+1"+text);
numberText.setSelection(numberText.getText().length());
}
}
其他没问题可能
要输入 +1 后的下一个字符,您应该使用:
numberText.settext("+1" + s.toString());
对于退格 +1,您需要 keyListener :(不适用于软键盘)
numberText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//You can identify which key pressed buy checking keyCode value with KeyEvent.KEYCODE_
if(keyCode == KeyEvent.KEYCODE_DEL){
//this is for backspace
String text = numberText.getText().toString();
if(text.equals("+1"))
return false;
}
}
});
编辑
尝试破解方法:
public void afterTextChanged(Editable s)
{
if(s.length() == 0 || s.toString().equals("+"))
{
numberText.settext("+1");
}
else if(s.length() == 1)
{
numberText.settext("+1"+s.toString());
numberText.setSelection(numberText.getText().length());
}
}
替换
numberText.settext("+1");
有
numberText.settext("+1"+s.toString());
我有一个 editText 和 inputType 作为 phone 数字。我想在输入第一个数字后立即添加特定的区号。比如说
我输入 6,EditText 应该显示 +1 6。
我正在尝试使用 textWatcher 实现此目的,但不确定如何将我键入的数字放在“+1”之后
public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
numberText.settext("+1");
numberText.setSelection(numberText.getText().length());
}
}
但这里的问题是,当我输入第一个数字时,+1 被填充,但通过键盘输入的数字没有显示。我不确定这里有什么问题?
此外,当我返回space 并从文本中删除 1 时,会发生这种情况,但我无法删除 +(这会自动填充)。我不想在填充 +1 后返回 space 时删除 +1。
这可能吗,如果可能怎么办?
谢谢!
替换
numberText.settext("+1");
和
numberText.settext("+1" + s.toString());
您没有正确更新现有文本。
使用这个:
public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
String text = numberText.getText().toString();
numberText.settext("+1"+text);
numberText.setSelection(numberText.getText().length());
}
}
其他没问题可能
要输入 +1 后的下一个字符,您应该使用:
numberText.settext("+1" + s.toString());
对于退格 +1,您需要 keyListener :(不适用于软键盘)
numberText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//You can identify which key pressed buy checking keyCode value with KeyEvent.KEYCODE_
if(keyCode == KeyEvent.KEYCODE_DEL){
//this is for backspace
String text = numberText.getText().toString();
if(text.equals("+1"))
return false;
}
}
});
编辑
尝试破解方法:
public void afterTextChanged(Editable s)
{
if(s.length() == 0 || s.toString().equals("+"))
{
numberText.settext("+1");
}
else if(s.length() == 1)
{
numberText.settext("+1"+s.toString());
numberText.setSelection(numberText.getText().length());
}
}
替换
numberText.settext("+1");
有
numberText.settext("+1"+s.toString());