管理editText内的电话号码

时间:2014-02-27 11:32:11

标签: android validation

我怀疑在android中管理电话号码。我希望看起来当用户在EditText中输入数字然后合成输入看起来像999 999 9999并且在完成之后输入的格式应该看起来像(999)999-9999。怎么能实现这个东西。我做了我的编码工作但是当用户点击键盘的十字键来支持文本时它不能正常工作。请帮忙!

代码:

@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
  String phone = edit_profilephone.getText().toString();
  if(phone.length() == 3)
  {
    edit_profilephone.setText(phone + " ");
    edit_profilephone.setSelection(4);
  }
  else if(phone.length() == 7)
  {
    edit_profilephone.setText(phone + " ");
    edit_profilephone.setSelection(8);
  }
  else if (phone.length() == 12)
  {
    int maxLength = 14;
    InputFilter[] fArray = new InputFilter[1];
    fArray[0] = new InputFilter.LengthFilter(maxLength);
    edit_profilephone.setFilters(fArray);

    StringBuilder buileString = new StringBuilder();
    String splitnumber[] = phone.split("\\s+");
    for (int i=0; i<splitnumber.length; i++)
    {
      if (i == 0)
      {
        buileString.append("(" + splitnumber[i] + ")");
      }
      else if (i == 1)
      {
        buileString.append(" " + splitnumber[i]);
      }
      else
      {
        buileString.append("-" + splitnumber[i]);
      }
    }
    edit_profilephone.setText(buileString.toString());
  }
}

3 个答案:

答案 0 :(得分:1)

您可以使用PhoneNumberUtils.formatNumber()方法。

或者您可以使用PhoneNumberFormattingTextWatcher。我之前从未使用过这个,但它似乎完成了你想做的所有工作。

答案 1 :(得分:1)

您也可以使用

EditText inputField = (EditText) findViewById(R.id.inputfield);
inputField.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

For more Idea...

答案 2 :(得分:0)

另外不要忘记将文本类型放在XML文档中用于编辑文本,这可能会有所帮助:)祝你好运!像这样:

EditText
    android:id="@+id/editTextId"
    android:inputType="phone"
    android:digits="0123456789+" 
/>