Android library designed for automatic formatting of text input by custom rules.
Add to the build.gradle of your app module:
dependencies {
compile 'ru.tinkoff.decoro:decoro:$latestVersion'
}In examples below the content of the String text will be formatted according to a mask.
Mask mask = new MaskImpl(PredefinedSlots.RUS_PHONE_NUMBER, true);
mask.insertFront("9995554433");
System.out.println(mask.toString()); // +7 (999) 555-44-33Example 2:
Slot[] slots = new UnderscoreDigitSlotsParser().parseSlots("___ ___");
Mask mask = MaskImpl.createTerminated(slots); // 'terminated' mask
mask.insertFront("9995554433");
System.out.println(mask.toString()); // 999 555Example 3:
Slot[] slots = new UnderscoreDigitSlotsParser().parseSlots("___ ___");
Mask mask = MaskImpl.createNonTeminated(slots); // 'non-terminated' mask
mask.insertFront("9995554433");
System.out.println(mask.toString()); // 999 5554433In examples below all the user's text input to EditText will be formatted according to a mask.
MaskImpl mask = MaskImpl.createTerminated(PredefinedSlots.CARD_NUMBER_USUAL);
FormatWatcher watcher = new MaskFormatWatcher(mask);
watcher.installOn(editText); // install on any TextViewPredefinedSlots.SINGLE_SLOT // Any character
PredefinedSlots.RUS_PHONE_NUMBER // Russian phone number formatted as +7 (___) ___-__-__ (digits only)
PredefinedSlots.RUS_PASSPORT // Series and number of russian passport formatted as ____ ______ (digits only)
PredefinedSlots.CARD_NUMBER_STANDARD // Credit card number formatted as ____ ____ ____ ____ (digits only)
PredefinedSlots.CARD_NUMBER_STANDARD_MASKABLE // Credit card number formatted as ____ ____ ____ ____ (digits and chars 'X', 'x', '*')
PredefinedSlots.CARD_NUMBER_MAESTRO // Credit card number formatted as ________ ____ (digits only)
PredefinedSlots.CARD_NUMBER_MAESTRO_MASKABLE // Credit card number formatted as ________ ____ (digits and chars 'X', 'x', '*')Slot[] slots = new UnderscoreDigitSlotsParser().parseSlots("___ ___ ___");
FormatWatcher formatWatcher = new MaskFormatWatcher(MaskImpl.createTerminated(slots));
formatWatcher.installOn(editText); // install on any TextViewIn version 1.1.0 class FormatWatcherImpl was renamed to DescriptorFormatWatcher.
Also this version introduced MaskFormatWatcher that offers more clean API than DescriptorFormatWatcher.
More examples and details can be found in our wiki (in Russian yet).

