Android edittext手机格式

时间:2016-01-14 13:04:27

标签: android android-edittext

我正在为edittext实施电话号码格式 问题在于限制手机长度。

我正在使用PhoneNumberFormattingTextWatcher:

EditText telNumber = (EditText) findViewById(R.id.txt_tel);
telNumber.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

它并不限制电话号码的长度 所以我试图限制xml中编辑文本的长度:android:maxLength="16"

PhoneNumberFormattingTextWatcher 通过在某些字符之间插入空格来格式化EditText。
问题是对于不同的区域代码,它显示不同的格式并插入不同数量的空格:
+380 50 555 5555(16个字符)和
+380 5555 55555(15个字符)。
所以在第二种情况下,它允许添加一个不需要的字符。

如何解决这个问题? 也许PhoneNumberFormattingTextWatcher中有一个内置功能来限制电话号码?

如何为所有区域代码实施单一格式
成为: +380 50 555 5555 +380 55 555 5555?

2 个答案:

答案 0 :(得分:1)

你要找的东西是:

EditText telNumber = (EditText) findViewById(R.id.txt_tel);
telNumber.setInputType(InputType.TYPE_CLASS_PHONE);
InputFilter[] filter = new InputFilter[1];
filter[0] = new InputFilter.LengthFilter(16);
telNumber.setFilters(filter);

至于字符数限制,唯一适用的属性是您提到的android:maxLength。我非常确定TextView只计算输入字符,而不是它在该条件下在视图中显示的字符。

答案 1 :(得分:1)

您可以取消删除将从edittext中删除不需要的字符的电话号码。

尝试以下代码

String cell = _cellNumber_ET.getText().toString().trim();
    cell = PhoneNumberUtils.stripSeparators(cell);