Java 在android中输入第一个字符后立即输入字符
我有一个编辑文本和输入作为电话号码。我想在输入第一位数字后立即添加特定的区号。比如说 我输入6,编辑文本将显示+16 我正在尝试使用textWatcher实现这一点,但不确定如何将我键入的数字放在“+1”之后 但这里的问题是,当我输入第一个数字时,+1被填充,但通过键盘键入的数字没有显示出来。我不确定这里出了什么问题 同样,当我退格并从文本中删除1时,会发生这种情况,但我无法删除+(这会自动填充)。在填充+1后返回空间时,我不想删除+1 这可能吗?如果可能,怎么可能 谢谢 更换Java 在android中输入第一个字符后立即输入字符,java,android,string,android-edittext,Java,Android,String,Android Edittext,我有一个编辑文本和输入作为电话号码。我想在输入第一位数字后立即添加特定的区号。比如说 我输入6,编辑文本将显示+16 我正在尝试使用textWatcher实现这一点,但不确定如何将我键入的数字放在“+1”之后 但这里的问题是,当我输入第一个数字时,+1被填充,但通过键盘键入的数字没有显示出来。我不确定这里出了什么问题 同样,当我退格并从文本中删除1时,会发生这种情况,但我无法删除+(这会自动填充)。在填充+1后返回空间时,我不想删除+1 这可能吗?如果可能,怎么可能 谢谢 更换 numberTe
numberText.settext("+1");
numberText.settext("+1");
与
您没有正确更新现有文本。替换
numberText.settext("+1");
numberText.settext("+1");
与
您没有正确更新现有文本。请使用以下方法:
public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
String text = numberText.getText().toString();
numberText.settext("+1"+text);
numberText.setSelection(numberText.getText().length());
}
}
其他的没问题,可能是使用这个:
public void afterTextChanged(Editable s)
{
if(s.length() == 1)
{
String text = numberText.getText().toString();
numberText.settext("+1"+text);
numberText.setSelection(numberText.getText().length());
}
}
另一个是OK,可以输入+1后的下一个字符,您应该使用:
numberText.settext("+1" + s.toString());
对于退格+1,您需要keyListener:(不适用于软键盘)
编辑尝试破解方法:
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());
}
}
输入+1后的下一个字符时,应使用:
numberText.settext("+1" + s.toString());
对于退格+1,您需要keyListener:(不适用于软键盘)
编辑尝试破解方法:
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");
与
替换
numberText.settext("+1");
numberText.settext("+1");
与
谢谢你的快速回复。。v、 getText()不可用?@TheDevMan编辑了我的答案。试试看。或者你可以先转换它。EditText w=(EditText)v;我已经检查过了,实际上没有人打电话。有什么问题吗?那你用的是软键盘。我的anwer不能用软键盘工作。我会用不同的方法更新我的答案。我正在使用软键盘。谢谢你的快速回复。。v、 getText()不可用?@TheDevMan编辑了我的答案。试试看。或者你可以先转换它。EditText w=(EditText)v;我已经检查过了,实际上没有人打电话。有什么问题吗?那你用的是软键盘。我的anwer不能用软键盘工作。我将使用差异方法更新我的答案我正在使用软键盘。你的答案和ZygoteInit的答案有什么区别?你的答案和ZygoteInit的答案有什么区别?明白了,但当我输入数字,然后退格时,“+1”1被删除并输入+:(明白了,但当我输入数字,然后退格“+1”1被删除并输入了“+”:(