decoro
decoro copied to clipboard
Android library designed for automatic formatting of text input by custom rules
Decoro
Android library designed for automatic formatting of text input by custom rules.
Installation
Add to the build.gradle
of your app module:
dependencies {
compile 'ru.tinkoff.decoro:decoro:$latestVersion'
}
Usage
String
formatting
In examples below the content of the String text
will be formatted according to a mask.
Example 1. Using predefined mask
Mask mask = new MaskImpl(PredefinedSlots.RUS_PHONE_NUMBER, true);
mask.insertFront("9995554433");
System.out.println(mask.toString()); // +7 (999) 555-44-33
Using custom mask
Example 2:
Slot[] slots = new UnderscoreDigitSlotsParser().parseSlots("___ ___");
Mask mask = MaskImpl.createTerminated(slots); // 'terminated' mask
mask.insertFront("9995554433");
System.out.println(mask.toString()); // 999 555
Example 3:
Slot[] slots = new UnderscoreDigitSlotsParser().parseSlots("___ ___");
Mask mask = MaskImpl.createNonTeminated(slots); // 'non-terminated' mask
mask.insertFront("9995554433");
System.out.println(mask.toString()); // 999 5554433
Formatting "on the fly"
In examples below all the user's text input to EditText
will be formatted according to a mask.
Example 4. Using predefined mask
MaskImpl mask = MaskImpl.createTerminated(PredefinedSlots.CARD_NUMBER_USUAL);
FormatWatcher watcher = new MaskFormatWatcher(mask);
watcher.installOn(editText); // install on any TextView
Masks available out of the box:
PredefinedSlots.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', '*')
Example 5. Using custom mask
Slot[] slots = new UnderscoreDigitSlotsParser().parseSlots("___ ___ ___");
FormatWatcher formatWatcher = new MaskFormatWatcher(MaskImpl.createTerminated(slots));
formatWatcher.installOn(editText); // install on any TextView
Migration
In version 1.1.0 class FormatWatcherImpl
was renamed to DescriptorFormatWatcher
.
Also this version introduced MaskFormatWatcher
that offers more clean API than DescriptorFormatWatcher
.
References
More examples and details can be found in our wiki (in Russian yet).