Coder Social home page Coder Social logo

egslava / edittext-mask Goto Github PK

View Code? Open in Web Editor NEW
474.0 13.0 122.0 612 KB

The custom mask for EditText. The solution for masked edit text input phone numbers, SSN, and so on for Android

License: MIT License

Java 100.00%
java mask edittext maskededittext android-library android-sdk android social-security phone-number phone-format

edittext-mask's Introduction

Announcement: let's travel the world! or let's just be guests :)

MaskedEditText

Download Build Status

MaskedEditText - the library for masked input of phone numbers, social security numbers and so on for Android

Announcement: let's travel the world! or let's just be guests :)

This project derives from toshikurauchi/MaskedEditText, but it's been adapted for gradle build system and has additional features:

  1. filter allowed chars
  2. filter denied chars
  3. user can use chars from mask in his input (in original version of this library user couldn't use digit '7' in the '+7(XXX)XXX-XX-XX' pattern).
  4. You can keep hints even when user started typing.

So it allows you to use masks for phones, urls, etc.

Enjoy!

Get it on Google Play


en_US

MaskedEditText is a simple Android EditText with customizable input mask support.

For instance, you need user specified his phone in format +7(XXX)XXX-XX-XX. You also know user should have the only possibility to write digits but minuses, brackets and "+7" should appear automatically.

Usage

Add this to your build.gradle :

compile 'ru.egslava:MaskedEditText:1.0.5'

Or download project and plug it in as a library.

Announcement: let's travel the world! or let's just be guests :)

Add xmlns:mask="http://schemas.android.com/apk/res-auto" to your layout xml root:

  <br.com.sapereaude.maskedEditText.MaskedEditText
    android:id="@+id/phone_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:typeface="monospace"
    mask:allowed_chars="1234567890"
    mask:mask="+7(###)###-##-##"
    android:hint="1234567890"
    app:keep_hint="true"
    />    

Where mask is the input mask you want and '#' is an editable position (will be replaced by a whitespace on screen).

You can optionally set the representation character (in case you don't want to use '#'):

<br.com.sapereaude.maskedEditText.MaskedEditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    mask:mask="ccc.ccc.ccc-cc"
    mask:char_representation="c"
/>

Announcement: let's travel the world! or let's just be guests :)

You can also change the mask and the representation character programatically:

MaskedEditText editText = (MaskedEditText) findViewById(R.id.my_edit_text)
// Setting the representation character to '$'
editText.setCharRepresentation('$');
// Logging the representation character
Log.i("Representation character", editText.getCharRepresentation());
// Setting the mask
editText.setMask("##/##/####");
// Logging the mask
Log.i("Mask", editText.getMask());

To enable Enter softkey action (IME action):

<br.com.sapereaude.maskedEditText.MaskedEditText
    ...
    mask:enable_ime_action="true"
    ...
/>

Announcement: let's travel the world! or let's just be guests :)

Or programmatically:

MaskedEditText editText = (MaskedEditText) findViewById(R.id.my_edit_text)
editText.setImeActionEnabled(true);

ru_RU

MaskedEditText - это всего лишь EditText, но с возможностью задавать произвольную маску.

Например, нужно ввести телефон в формате +7(XXX)XXX-XX-XX. Причём можно ввести только цифры, а скобочки, дефисы и "+7" должны подставляться самостоятельно.

Использование

Вписать в build.gradle:

compile 'ru.egslava:MaskedEditText:1.0.5'

или скачать проект и подключить как библиотеку.

Добавить xmlns:mask="http://schemas.android.com/apk/res-auto" в корневой элемент файла разметки:

  <br.com.sapereaude.maskedEditText.MaskedEditText
    android:id="@+id/phone_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:typeface="monospace"
    mask:allowed_chars="1234567890"
    mask:mask="+7(###)###-##-##"
    android:hint="1234567890"
    app:keep_hint="true"
    />

mask задаёт требуемую маску, символ '#' задаёт редактируемую позицию (и будет заменён на пробел на экране).

Если использовать '#' нельзя, то можно попробовать использовать другой символ:

<br.com.sapereaude.maskedEditText.MaskedEditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    mask:mask="ccc.ccc.ccc-cc"
    mask:char_representation="c"
/>

Кроме того, всё тоже самое можно сделать и программно:

MaskedEditText editText = (MaskedEditText) findViewById(R.id.my_edit_text)
// Setting the representation character to '$'
editText.setCharRepresentation('$');
// Logging the representation character
Log.i("Representation character", editText.getCharRepresentation());
// Setting the mask
editText.setMask("##/##/####");
// Logging the mask
Log.i("Mask", editText.getMask());

Чтобы включить обработку нажатия Enter (IME action):

<br.com.sapereaude.maskedEditText.MaskedEditText
    ...
    mask:enable_ime_action="true"
    ...
/>

Или программно:

MaskedEditText editText = (MaskedEditText) findViewById(R.id.my_edit_text)
editText.setImeActionEnabled(true);

edittext-mask's People

Contributors

alexandermatveychuk avatar dmitrikudrenko avatar egslava avatar mrxlebnick avatar prostof avatar vitorhugods avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

edittext-mask's Issues

При вводе +79276 вводит +7926

Привет!

Пытаюсь заюзать с маской "+7 (###) ###-##-##" и получаю трабл после ввода цифры 7.
Пишу "+7 (927" и как только ввожу следующую цифру, например 6, введенный текст становится "+7 (926".

Пытаюсь побороть уже часа три, но пока не удалось.
Проблема, как я вижу, тут

private void initSymbolMask(){
        for (int i=0; i < mMask.length(); i++){
            char ch = mMask.charAt(i);
            if (ch != '#')
                symbolMask.add(String.valueOf(ch));
        }
    }

и соответственно потом тут

String str = Utils.unmask(s.toString(), symbolMask);

Можешь помочь?

Can't instantiate MaskedEditText programmatically

You can't instantiate MaskedEditText programmatically with new MaskedEditText(mContext) constructor, because when you call setMask() there is no charRepresentation for generatePositionArrays() to match every mask char therefore rawToMask has zero length and selection = rawToMask[0]; fails with ArrayIndexOutOfBoundsException. BUT you can't setCharRepresentation() either, because mask is null and there is no null check in generatePositionArrays() on mask.length() call.
I guess setting default charRepresentation statically or setting mask to "" would fix the issue

Validation is not working...

Why the validation is not working?
if (rp_ipET.getText().toString().length()<1) { rp_ipET.setError("Please select or enter a machine IP"); return; }

problem while using Editext-mask in Dialog Fragment.

Process: com.vivekahealth.vivekahealth, PID: 15080
android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText
Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at com.vivekahealth.vivekahealth.login.fragment.FragmentContinueAsGuest.onCreateView(FragmentContinueAsGuest.java:95)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2261)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:836)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:232)
at android.app.ActivityThread.main(ActivityThread.java:6661)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1106)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

Not possible to set mask in runtime only

When mask is omitted in xml layout to be set later in runtime application fails with the following exception:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
    at br.com.sapereaude.maskedEditText.MaskedEditText.generatePositionArrays(MaskedEditText.java:205)
    at br.com.sapereaude.maskedEditText.MaskedEditText.cleanUp(MaskedEditText.java:122)
    at br.com.sapereaude.maskedEditText.MaskedEditText.<init>(MaskedEditText.java:69)

keyboard layout is reset after each character

I am using this lib to enter the MAC address, which format is ##:##:##:##:##:##, and should accept
1234567890ABCDEF char set.
The problem is when switching to the digits keyboard, after pressing a digit, it resets keyboard layout to a regular again.

Is it possible to change the color of non-editable masked character

Hi,

Thanks for creating this useful library.

Currently, I'm using it in one of our stock market app.

We use the following XML, to enable user to input their DOB.

<br.com.sapereaude.maskedEditText.MaskedEditText
    android:id="@+id/dob_exit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="number"

    mask:allowed_chars="1234567890"
    android:hint="MMDDYYYY"
    android:textColor="?attr/primaryTextColor"
    android:background="@android:color/transparent"
    mask:mask="##/##/####"
    android:textSize="18sp"
    mask:keep_hint="true" >
    <requestFocus />
</br.com.sapereaude.maskedEditText.MaskedEditText>

The following is the outcome

dob

Note of the above display

01/2D/YYYY
wwwwgggggg

For the coloring (w is white, g is grey)

Can we change / to always stay in white? So, for the above example, it will be

01/2D/YYYY
wwwwgwgggg

For the following, I wish it can be
MM/DD/YYYY
ggwggwgggg

EditText skips fast key presses

If you try to type too quickly, apparently masked edittext fails to process input in time, becomes inactive and skips input completely, resulting in laggy, slow performance.
Logcat messages when it happens:
W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection

Hint issue

I really don't know how to categorize this issue, but, if you try set the hint on XML file

android:hint="YOUR HINT"

and your

mask:mask="HAPPENS TO BE LONGER"

runtime compiler will throw

Caused by: java.lang.StringIndexOutOfBoundsException

actionNext doesn't work

Hi,

I have a problem, when somebody presses "Enter" I want to move focus for the next input, in another inputs it works fine, but when I have one with your mask, it's not working. Here is a sample:

<LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left"
                    android:layout_marginEnd="21dp"
                    android:layout_marginStart="21dp"
                    android:textColor="@color/purple"
                    android:text="@string/text_fullname"
                    android:textSize="12sp"
                    />

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/etConfigPersonalDataFullName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="16dp"
                    android:layout_marginStart="16dp"
                    android:imeOptions="flagNoFullscreen|actionNext"
                    android:nextFocusForward="@+id/etConfigPersonalDataCpf"
                    android:maxLines="1"
                    android:textColor="@color/purple"
                    android:textColorHint="@color/purple"
                    android:textSize="13sp"
                    android:inputType="text"
                    />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left"
                    android:layout_marginEnd="21dp"
                    android:layout_marginStart="21dp"
                    android:textColor="@color/purple"
                    android:text="@string/text_cpf"
                    android:textSize="10sp"
                    />

                <br.com.sapereaude.maskedEditText.MaskedEditText
                    android:id="@+id/etConfigPersonalDataCpf"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="16dp"
                    android:layout_marginStart="16dp"
                    android:inputType="number"
                    android:typeface="monospace"
                    android:textColor="@color/purple"
                    android:textColorHint="@color/purple"
                    mask:mask="###.###.###-##"
                    apptools:hint="123.456.789-01"
                    android:textSize="13sp"
                    apptools:keep_hint="true"
                    android:imeOptions="flagNoFullscreen|actionNext"
                    android:nextFocusForward="@+id/etConfigPersonalDataBirthdate"
                    />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left"
                    android:layout_marginEnd="21dp"
                    android:layout_marginStart="21dp"
                    android:textColor="@color/purple"
                    android:text="@string/text_birthdate"
                    android:textSize="10sp"
                    />

                <br.com.sapereaude.maskedEditText.MaskedEditText
                    android:id="@+id/etConfigPersonalDataBirthdate"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="16dp"
                    android:layout_marginStart="16dp"
                    android:inputType="number"
                    android:typeface="monospace"
                    android:textColor="@color/purple"
                    android:textColorHint="@color/purple"
                    android:textSize="13sp"
                    mask:mask="##/##/#####"
                    apptools:hint="__/__/____"
                    apptools:keep_hint="true"
                    android:imeOptions="flagNoFullscreen|actionNext"
                    android:nextFocusForward="@+id/etConfigPersonalDataPhone"
                    />
</LinearLayout>

Список недочётов

  1. клавиатура автоматом на фокусе не выскакивает.
  2. AppCompatEditText - это надо в реадми указать
  3. убрать закомментированный код, пофиксить форматирование

Баг с редактированием

При заполнении шаблона полностью и попытке редактирования где-нибудь в середине стирает текст в конце

ActionDone is not closing keyboard

When I click on "done" button on keyboard, the keyboard doesn't close.

<br.com.sapereaude.maskedEditText.MaskedEditText
            android:id="@+id/edittxt_login_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent"
            android:gravity="center"
            android:hint="@string/phone_number_hint"
            android:imeOptions="actionDone"
            android:inputType="numberDecimal"
            android:textColor="@color/secondary_text_color"
            android:textColorHint="#66FFFFFF"
            android:textSize="@dimen/textsize_xlarge"
            app:allowed_chars="1234567890"
            app:keep_hint="true"
            android:maxLines="1"
            app:mask="@string/phone_number_mask" />

Clear text causes java.lang.IndexOutOfBoundsException

I want to clear field when incorrect digit typed (two-digit month field for credit card)
When invoking monthCard.getText().clear(); there are such error:

FATAL EXCEPTION: main
Process: ru.perekrestok.app, PID: 28172
java.lang.IndexOutOfBoundsException: setSpan (1 ... 1) ends beyond length 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1309)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:680)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:672)
at android.text.Selection.setSelection(Selection.java:76)
at android.text.Selection.setSelection(Selection.java:87)
at android.widget.EditText.setSelection(EditText.java:127)
at br.com.sapereaude.maskedEditText.MaskedEditText.afterTextChanged(MaskedEditText.java:303)

Need a version based on AndroidX

Hi,

In order to remove Jetifier from my build scripts, this is one of the last utilities that includes the old android.support libraries.

Can you please make a version based on AndroidX

Thanks.

Apply mask only on text

Hi
Can we apply mask only on text and not on hint ?

i want the hint to be : "Phone number"
and when i type the numbers format will be like = "12 34 56 78 91"

Mask not work in fullscreen input(on phones in landscape orientation)/Маска не работает при полноэкранном вводе(на телефонах в landscape режиме))

Используемая маска:
<br.com.sapereaude.maskedEditText.MaskedEditText
android:id="@+id/clientBirthDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/info_lines_space"
android:hint="ДДММГГГГ"
android:inputType="numberDecimal"
android:maxLines="1"
android:singleLine="true"
android:typeface="monospace"
mask:allowed_chars="1234567890"
mask:keep_hint="true"
mask:mask="##.##.####" />
Image from iOS

First char has black color

Первый элемент строки окрашивается в черный цвет, если маска выглядит следующим образом:
<br.com.sapereaude.maskedEditText.MaskedEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:singleLine="true"
android:id="@+id/phone"
android:inputType="phone"
android:typeface="monospace"
mask:allowed_chars="1234567890"
mask:mask="(###)###-##-##"
android:hint="XXXXXXXXXX"
/>
В таком случае, скобка горит черным

Подскажите, пожалуйста, это баг или необходимо как-то настроить элемент?

image

Android Studio XML designer preview: The following classes could not be instantiated

Hello,
When I try to run my app I see the error Binary XML file line #50. Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText
and in preview i have this:
The following classes could not be instantiated:
- br.com.sapereaude.maskedEditText.MaskedEditText (Open Class, Show Exception, Clear Cache)

I have the line in build.gradle
compile 'ru.egslava:MaskedEditText:1.0.5'
so there have to be no problem, but unfortunately we have...

Using Android Studio

Text not valid with mask

Mask = +7(###)###-##-##
Text = +7(999)999-99-999
last symbol

i get text in afterTextChange callback

How can i do like this way?

I need to add first letter should be letter and slash then full numbers only with 3 numbers . Ex : K/000

I have done like this way,
<br.com.sapereaude.maskedEditText.MaskedEditText
android:id="@+id/storeET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/custom_spinner_background"
android:hint="00000"
android:inputType="text"
android:padding="6dp"
android:textColor="@color/grey"
android:textSize="18sp"
android:typeface="monospace"
mask:keep_hint="true"
mask:mask="#/###" />

public static void maskedEditTextFontStoreCode(Activity activity, MaskedEditText rp_ipET) {
      Typeface face = Typeface.createFromAsset(activity.getAssets(),
              "segoeuil.ttf");
      rp_ipET.setTypeface(face);
      rp_ipET.setCharRepresentation('#');
      rp_ipET.setMask("#/###");
  }

Now i need to add to handle first letter should be Characters and rest 3 letter should be number.

Support for multi line

Apply mask on the each line:


<br.com.sapereaude.maskedEditText.MaskedEditText xmlns:app="http://schemas.android.com/apk/res-auto"
	android:id="@+id/multi_input"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:hint="1234567890"
	android:inputType="textMultiLine|number"
	android:minLines="4"
	android:maxLines="4"
	android:lines="4"
	android:typeface="monospace"
	app:keep_hint="true"
	mask:allowed_chars="1234567890"
	mask:mask="##,##,##,##,##,##" />

getText() on an empty EditText returns placeholder

I have an MaskedEditText as follows:

<br.com.sapereaude.maskedEditText.MaskedEditText
	xmlns:mask="http://schemas.android.com/apk/res-auto"
	android:id="@+id/registration_citizenship_info_social_security"
	style="@style/RegistrationEditText"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:typeface="monospace"
	mask:allowed_chars="1234567890"
	mask:mask="###-##-####"
	android:hint="123456789" />

When I don't fill anything in and I call getText(), this returns me the hint (123-45-5689), instead of an empty String. getRawText() does return me an empty String if nothing was filled in, but if something was filled in, this returns me the value without formatting, which is also not what I want.

NullPointerException

Hello! I'm ran into with some error. When I'm enter the symbols by keyboard, sometimes I'm get a crash like this.

E/AndroidRuntime: FATAL EXCEPTION: Thread-14 Process: com.pa.mango, PID: 19742 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference at com.android.tools.profiler.support.profilers.EventProfiler$InputConnectionHandler.run(EventProfiler.java:316) at java.lang.Thread.run(Thread.java:764)

My XML-file is:

` <br.com.sapereaude.maskedEditText.MaskedEditText

        android:id="@+id/card_edit_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="40dp"
        android:backgroundTint="@android:color/transparent"
        android:fontFamily="sans-serif-medium"
        android:gravity="center"
        android:hint="00000000000000000000"
        android:inputType="number"
        android:longClickable="false"
        android:textColor="@color/colorText"
        android:textColorHint="@color/white_38"
        android:textSize="20sp"
        mask:allowed_chars="1234567890"
        mask:keep_hint="true"
        mask:layout_constraintBottom_toBottomOf="@+id/icon"
        mask:layout_constraintLeft_toLeftOf="parent"
        mask:layout_constraintRight_toRightOf="parent"
        mask:mask="#### #### #### #### ####" />` 

Needs 3 backspace strokes on 2 digits entered

With a mask containing spaces it requires extra backspace strokes to completely remove the entered value plus the whole deletion process looks weird.

Here is an example of layout

<br.com.sapereaude.maskedEditText.MaskedEditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="__"
    android:inputType="number"
    app:allowed_chars="1234567890"
    app:keep_hint="true"
    app:mask="4111 ***# #*** 1111"/>

and the result

result

Hint mask shows a wrong format

Hi,

According to my mask format, MaskedEditText hint should want to show 12345678-123456 but in hint string shows a wrong way (12345678--123456) when the application runs. It's contains 2 dash signs (12345678--123456).

<br.com.sapereaude.maskedEditText.MaskedEditText android:id="@+id/etJobName" style="@style/EditText_Style" android:layout_height="71dp" android:layout_marginTop="10dp" android:inputType="phone" android:typeface="monospace" app:allowed_chars="1234567890" app:mask="########-######" android:hint="12345678-123456" app:keep_hint="true" />

Clean initial char

I using phone mask, when the activity start the edit text start with the first char '('
How I prevent this?

eg.:
(XXX)XXX-XX-XX

When activity start:
(

Не работает совместно с автозаполнением

Используем для авторизации, первое поле телефон, второе пароль.
Все здорово работает, пока дело не доходит до автосохраненого пароля гуглом и при выборе сохраненного пароля телефон +7915... он вставляется так +77915...

IP mask

Hello,

are IPs supported?

Regards
Martin

Travel

Hey everyone! 👋🏻

Please, until you forget, right now, put 👀 emoji on this message. So I'd know that at least anyone read it/clicked on the announcement :-D

Hint not persist

Hi,

I've followed the instruction but the hint not show properly.
It overlapped an truncated.

((12)-3)--456-

this is the layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mask="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/form_element_spacing"
    android:orientation="vertical">

    <br.com.sapereaude.maskedEditText.MaskedEditText
        android:id="@+id/met_phone"
        android:layout_width="match_parent"
        android:layout_height="@dimen/form_element_height"
        android:inputType="phone"
        style="@style/text_view_form"
        mask:allowed_chars="1234567890"
        mask:mask="(###)-###-####"
        android:hint="(123)-456-7890"
        app:keep_hint="true"
        />
</LinearLayout>

Thank you

Copyright information

Can you please add your copyright information in the license file?
If possible, we also need a tag for 1.0.5 version in the git repository.

Doesn't work with androidx?

I'm trying to use the sample code shown below :

<br.com.sapereaude.maskedEditText.MaskedEditText android:id="@+id/phone_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:typeface="monospace" mask:allowed_chars="1234567890" mask:mask="+7(###)###-##-##" android:hint="1234567890" app:keep_hint="true" />

but it always give me this error :
android.view.InflateException: Binary XML file line #64: Binary XML file line #64: Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText Caused by: android.view.InflateException: Binary XML file line #64: Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:334) at android.view.LayoutInflater.createView(LayoutInflater.java:651) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734) at android.view.LayoutInflater.rInflate(LayoutInflater.java:867) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) at android.view.LayoutInflater.rInflate(LayoutInflater.java:870) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) at android.view.LayoutInflater.rInflate(LayoutInflater.java:870) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) at android.view.LayoutInflater.rInflate(LayoutInflater.java:870) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) at android.view.LayoutInflater.inflate(LayoutInflater.java:519) at android.view.LayoutInflater.inflate(LayoutInflater.java:427)

I currently working with androidx, is this library has problems with androidx?

btw, nice library. Thanks!

Pushing the library artifacts to Maven Central

With the news that JCenter will be winding down its public repository (https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/), would you consider migrating the artifacts to be available through an alternate source? Couple of options:

Jitpack is fairly straightforward, but Maven Central takes a bit of initial effort to set up. I could help with updating the publish tasks of the project so that it can push to Maven Central instead of JCenter.

SetError method not working

When I run the default setError method from TextView, nothing happens. The drawable icon and the error message are not shown. It works just fine with normal EditTexts.

Error when add 2 editText in one xml file

I am trying to use 2 MaskedEditText but wheb run applicaiton it shows errors

Error code
java.lang.RuntimeException: Unable to start activity ComponentInfo{uz.xb.istemolkredit/uz.xb.istemolkredit.ui.MainActivity}: android.view.InflateException: Binary XML file line #65: Binary XML file line #65: Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3092)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6990)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
Caused by: android.view.InflateException: Binary XML file line #65: Binary XML file line #65: Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText
Caused by: android.view.InflateException: Binary XML file line #65: Error inflating class br.com.sapereaude.maskedEditText.MaskedEditText
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at uz.xb.istemolkredit.ui.MainActivity.onCreate(MainActivity.java:104)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
2019-09-23 15:04:25.725 30583-30583/? E/AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6990)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at br.com.sapereaude.maskedEditText.MaskedEditText.generatePositionArrays(MaskedEditText.java:205)
at br.com.sapereaude.maskedEditText.MaskedEditText.cleanUp(MaskedEditText.java:122)
at br.com.sapereaude.maskedEditText.MaskedEditText.(MaskedEditText.java:69)
... 42 more

XML code

                        <com.google.android.material.textfield.TextInputLayout
                            android:id="@+id/passportSerial_inputLayout"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="@dimen/_4dp"
                            android:background="@drawable/rectangle_message_white"
                            android:hint="@string/passport_serial"
                            android:padding="@dimen/_4dp"
                            android:textColorHint="@color/colorBlack"
                            android:theme="@style/textInputLayout">

                            <br.com.sapereaude.maskedEditText.MaskedEditText
                                android:id="@+id/passportSerial_editText"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:background="@android:color/transparent"
                                android:ems="4"
                                android:imeOptions="actionNext"
                                android:inputType="text"
                                android:maxLength="2"
                                android:padding="@dimen/_8dp"
                                android:textColor="@color/colorBlack"
                                android:textColorHint="#66161616"
                                android:keep_hint="true"
                                android:textStyle="bold" />
                        </com.google.android.material.textfield.TextInputLayout>

                            <com.google.android.material.textfield.TextInputLayout
                                android:id="@+id/passportNumber_inputLayout"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:background="@drawable/rectangle_message_white"
                                android:hint="@string/passport_number"
                                android:padding="@dimen/_4dp"
                                android:textColorHint="@color/colorBlack"
                                android:theme="@style/textInputLayout">

                                <br.com.sapereaude.maskedEditText.MaskedEditText
                                    android:id="@+id/passportNumber_editText"
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content"
                                    android:background="@android:color/transparent"
                                    android:imeOptions="actionNext"
                                    android:inputType="numberDecimal"
                                    android:maxLength="7"
                                    android:padding="@dimen/_8dp"
                                    android:textColor="@color/colorBlack"
                                    android:textColorHint="#66161616"
                                    android:keep_hint="true"
                                    android:textStyle="bold" />
                            </com.google.android.material.textfield.TextInputLayout>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.