在android中输入第一个字符后立即输入字符

时间:2015-03-10 08:16:47

标签: java android string android-edittext

我有一个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。

这是可能的,如果是这样的话?

谢谢!

4 个答案:

答案 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());