我有一个editText和inputType作为电话号码。我想在输入第一个数字后立即添加特定的区号。比如说
我输入6,EditText应该显示为+1 6.
我正在尝试使用textWatcher实现此功能,但不确定如何将我输入的数字放在" + 1"
之后 public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
numberText.settext("+1");
numberText.setSelection(numberText.getText().length());
}
}
但问题在于,当我输入第一个数字时,会填充+1,但是没有显示通过键盘输入的数字。我不确定这里有什么问题?
此外,当我退格并从文本中删除1时会发生这种情况,但我无法删除+(这会自动填充)。
后,当我退回空格时,我不想删除+1。这是可能的,如果是这样的话?
谢谢!
答案 0 :(得分:3)
替换
numberText.settext("+1");
与
numberText.settext("+1" + s.toString());
您没有正确更新现有文字。
答案 1 :(得分:2)
输入+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());
}
}
答案 2 :(得分:0)
使用此:
public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
String text = numberText.getText().toString();
numberText.settext("+1"+text);
numberText.setSelection(numberText.getText().length());
}
}
其他可能是好的
答案 3 :(得分:0)
替换
numberText.settext("+1");
使用
numberText.settext("+1"+s.toString());