【发布时间】:2015-07-23 08:16:44
【问题描述】:
在我的应用中,用户输入他的电话号码。 例如,如果他输入: 123456 我想让他看到: 12 34 56 我该怎么做?
【问题讨论】:
标签: android android-layout android-activity
在我的应用中,用户输入他的电话号码。 例如,如果他输入: 123456 我想让他看到: 12 34 56 我该怎么做?
【问题讨论】:
标签: android android-layout android-activity
根据语言环境试试它的工作方式:
etNumber.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
您也可以使用国家代码。 https://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
【讨论】:
您可以将文本观察器添加到您的编辑文本中并检查文本的大小直到 2 位并在其中添加空格,如下所示
callphoneEditText.addTextChangedListener(new CustomTextWatcherForPhoneNumber());
下面的类做了你需要的事情
public static class CustomTextWatcherForPhoneNumber implements TextWatcher {
// Change this to what you want... ' ', '-' etc..
private static final char space = ' ';
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
// Remove spacing char
if (s.length() > 0 && (s.length() % 5) == 0) {
final char c = s.charAt(s.length() - 1);
if (space == c) {
s.delete(s.length() - 1, s.length());
}
}
// Insert char where needed.
if (s.length() > 0 && (s.length() % 5) == 0) {
char c = s.charAt(s.length() - 1);
// Only if its a digit where there should be a space we insert a
// space
if (Character.isDigit(c)
&& TextUtils.split(s.toString(), String.valueOf(space)).length <= 2) { ****// At this point you will check values and add space between them****
s.insert(s.length() - 1, String.valueOf(space));
}
}
}
}
检查一下,如果对你有帮助,请告诉我
【讨论】:
您应该查看android.telephony API 中的PhoneNumberUtils:https://developer.android.com/reference/android/telephony/PhoneNumberUtils.html
编辑:
在那里你可以找到方法formatNumber,你可以使用它来显示电话号码。
此方法尝试根据其所在国家/地区的规则来格式化数字。如果这不可能,则返回原始数字。
public static String formatNumber (String phoneNumber)
此方法尝试根据给定国家/地区的默认约定格式化数字(国家/地区参数设置为两个字母的国家/地区代码,例如 US、GB 或 DE。有关详细信息,请参阅此处:@987654322 @)。如果数字无效,则方法返回null。
public static String formatNumber (String phoneNumber, String defaultCountryIso)
【讨论】:
您可以从 google 代码中查看 libphonenumber 库。 https://github.com/googlei18n/libphonenumber。
我用它为 android 做了一个小应用程序,它运行得很好。
在法国通常使用 XX XX XX XX 数字格式。所以你可以做类似的事情
String formattedNumber = phoneUtil.parse(numberProto, "FR");
它们还具有“键入时格式化”功能,这可能也是您感兴趣的。请查看他们的示例。
//Formatting Phone Numbers 'as you type'
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
System.out.println(formatter.inputDigit('6')); // Outputs "6"
... // Input more digits
System.out.println(formatter.inputDigit('3')); // Now outputs "650 253"
编辑
您可以使用下面的链接https://rawgit.com/googlei18n/libphonenumber/master/javascript/i18n/phonenumbers/demo-compiled.html 来尝试代码返回的内容。 (有趣的是“asYouTypeFormatter”的输出
【讨论】: