Android APIs
public class

PhoneNumberFormattingTextWatcher

extends Object
implements TextWatcher
java.lang.Object
   ↳ android.telephony.PhoneNumberFormattingTextWatcher

Class Overview

Watches a TextView and if a phone number is entered will format it.

Stop formatting when the user

  • Inputs non-dialable characters
  • Removes the separator in the middle of string.

The formatting will be restarted once the text is cleared.

Summary

Public Constructors
PhoneNumberFormattingTextWatcher()
The formatting is based on the current system locale and future locale changes may not take effect on this instance.
PhoneNumberFormattingTextWatcher(String countryCode)
The formatting is based on the given countryCode.
Public Methods
synchronized void afterTextChanged(Editable s)
This method is called to notify you that, somewhere within s, the text has been changed.
void beforeTextChanged(CharSequence s, int start, int count, int after)
This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after.
void onTextChanged(CharSequence s, int start, int before, int count)
This method is called to notify you that, within s, the count characters beginning at start have just replaced old text that had length before.
[Expand]
Inherited Methods
From class java.lang.Object
From interface android.text.TextWatcher

Public Constructors

public PhoneNumberFormattingTextWatcher ()

Added in API level 1

The formatting is based on the current system locale and future locale changes may not take effect on this instance.

public PhoneNumberFormattingTextWatcher (String countryCode)

Added in API level 21

The formatting is based on the given countryCode.

Parameters
countryCode the ISO 3166-1 two-letter country code that indicates the country/region where the phone number is being entered.

Public Methods

public synchronized void afterTextChanged (Editable s)

Added in API level 1

This method is called to notify you that, somewhere within s, the text has been changed. It is legitimate to make further changes to s from this callback, but be careful not to get yourself into an infinite loop, because any changes you make will cause this method to be called again recursively. (You are not told where the change took place because other afterTextChanged() methods may already have made other changes and invalidated the offsets. But if you need to know here, you can use setSpan(Object, int, int, int) in onTextChanged(CharSequence, int, int, int) to mark your place and then look up from here where the span ended up.

public void beforeTextChanged (CharSequence s, int start, int count, int after)

Added in API level 1

This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.

public void onTextChanged (CharSequence s, int start, int before, int count)

Added in API level 1

This method is called to notify you that, within s, the count characters beginning at start have just replaced old text that had length before. It is an error to attempt to make changes to s from this callback.