EditText 的 Android 电话号码掩码
Posted
技术标签:
【中文标题】EditText 的 Android 电话号码掩码【英文标题】:Android phone number mask for EditText 【发布时间】:2016-02-26 10:18:59 【问题描述】:我正在为 android 开发应用程序。在这个应用程序中,用户需要注册,他需要输入电话号码。我想以 +7 (999) 999-99-99 这样的格式为这个文本字段制作掩码。我试过使用mPhoneNumberEditText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
,但它只提供 (999) 999-9999 格式。
我该如何做我需要的格式?
【问题讨论】:
请发布您尝试过的代码。 【参考方案1】:在 Android Studio 的 Android 程序中在 EditText 上使用掩码的最有效方法是使用 MaskedEditText
库 (GitHub link)。
这是一种带有 Watcher 的自定义 EditText,它允许您设置不同颜色的提示(如果您想要,即使用户已经开始输入也可用)、遮罩并且非常易于使用:-)
compile 'ru.egslava:MaskedEditText:1.0.5'
<br.com.sapereaude.maskedEditText.MaskedEditText
android:id="@+id/phone_input"
android:layout_
android:layout_
android:inputType="phone"
android:typeface="monospace"
mask:allowed_chars="1234567890"
mask:mask="+7(###)###-##-##"
app:keep_hint="true"
/>
就是这样!
【讨论】:
【参考方案2】:此插件可以提供帮助:
https://github.com/pinball83/Masked-Edittext
<com.github.pinball83.maskededittext.MaskedEditText
android:id="@+id/masked_edit_text"
android:layout_
android:layout_
android:inputType="number"
app:mask="+7 (***) ***-**-**"
app:notMaskedSymbol="*"/>
【讨论】:
【参考方案3】:您要查找的格式在俄罗斯使用。 使用以下代码:
String data = PhoneNumberUtils.formatNumber("9999999999", "RU");
Log.i("Number", data);
第一个参数是您的数字字符串,第二个参数是国家/地区的 ISO 代码。
有用的链接:Android Docs、Phone Number formats of different countries、ISO code of countries
【讨论】:
【参考方案4】:我分享我的一段代码给你一个想法,你是怎么做到的。
我很久以前为我的项目做的,希望你能弄清楚下面的数字XXXXXXXXXXXXX是如何在textwatcher中转换成XXXXX-XXXXXXX-X的
@Override
public void afterTextChanged(Editable s)
// TODO Auto-generated method stub
int i = et_cnic.getText().toString().length();
if (i < 6)
len = 0;
if (i == 6 && len < 7)
len = 7;
String ss = s.toString();
String first = ss.substring(0, ss.length() - 1);
String last = ss.substring(ss.length() - 1);
et_cnic.setText(first + "-" + last);
et_cnic.setSelection(et_cnic.getText().length());
if (i < 14)
len2 = 0;
if (i == 14 && len2 < 14)
len2 = 14;
String ss = s.toString();
String first = ss.substring(0, ss.length() - 1);
String last = ss.substring(ss.length() - 1);
et_cnic.setText(first + "-" + last);
et_cnic.setSelection(et_cnic.getText().length());
【讨论】:
以上是关于EditText 的 Android 电话号码掩码的主要内容,如果未能解决你的问题,请参考以下文章
Android 电话号码格式不适用于键盘和 EditText
Android开发 拨打电话(在EditText上判断输入字符串是否电话号码,是的话直接拨打电话)
从android中的edittext框中获取XXX-XXX-XXXX格式的电话号码