An Android library for formatting user input with masks, supporting phone numbers, dates, serial numbers, and more.
Input Mask is an Android library that formats user input in text fields using customizable masks. It solves the problem of unstructured or incorrect data entry by guiding users to input values in a specific format, such as phone numbers, dates, or serial numbers. The library filters out unnecessary symbols and applies appropriate restrictions based on the mask.
Android developers building forms or input fields that require structured data entry, such as phone number inputs, date pickers, or credit card forms.
Developers choose Input Mask for its flexibility in defining custom masks, support for international phone number formatting, and ability to handle complex input scenarios without compromising user experience. It integrates seamlessly with Android's EditText and works well with Kotlin-based projects.
User input masking library repo.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports custom masks for diverse formats like phone numbers, dates, and serial numbers, with examples such as [AA]-[00000099] for serials in the README.
Automatically guesses country codes from entered digits and applies corresponding restrictions, enhancing global app usability as highlighted in the features.
Extracts essential characters (e.g., digits from phone numbers) to improve data quality, a core feature described in the README.
Built with Kotlin for modern development, though it requires explicit kotlin-stdlib dependency as noted in the installation section.
Known issues with android:inputType causing IndexOutOfBoundsException, requiring workarounds like android:digits or KeyListener adjustments as documented.
Can lead to cursor jumps with autocorrection enabled, forcing developers to disable suggestions or use textVisiblePassword, per the known issues.
Mandates kotlin-stdlib even for Java projects, adding complexity and potential NoClassDefFoundError if not configured properly.