Создать пользовательскую InputMask в Android - PullRequest
0 голосов
/ 28 марта 2019

Как создать собственную маску ввода в Android.Например, нужен DFSU 618908, что означает, что 4 цифры в начале - это алфавиты, затем пробел, затем 7 цифр.

В веб-разработке я могу использовать InputMaskRobinHerbots Я был в Google, янашел это RedMadRonbot , но написано на kotlin, что я не знаком.

Как я могу просто создать в маске, используя TextWatcher для моего случая ...?

Любая помощь это так ценится.

<EditText
    android:id="@+id/editTextDialogNomorContainerDeliveryEkspor"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</EditText>

В моей деятельности просто

EditText nomorContainer = (EditText) promptsView.findViewById(R.id.editTextDialogNomorContainerDeliveryEkspor);
//some TextWatcher perhaps

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Вот пример использования TextWatcher для создания пользовательских InputMask

Создание этого класса, который переопределяет TextWatcher

  public class SsnMask implements TextWatcher {

private static final int MAX_LENGTH = 9;
private static final int MIN_LENGTH = 3;

private String updatedText;
private boolean editing;

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

}

@Override
public void onTextChanged(CharSequence text, int start, int before, int count) {
    if (text.toString().equals(updatedText) || editing) return;

    String digits = text.toString().replaceAll("\\D", "");
    int length = digits.length();

    if (length <= MIN_LENGTH) {
        updatedText = digits;
        return;
    }

    if (length > MAX_LENGTH) {
        digits = digits.substring(0, MAX_LENGTH);
    }

    if (length <= 5) {
        String firstPart = digits.substring(0, 3);
        String secondPart = digits.substring(3);

        updatedText = String.format(Locale.US, "%s-%s", firstPart, secondPart);
    }
    else {
        String firstPart = digits.substring(0, 3);
        String secondPart = digits.substring(3, 5);
        String thirdPart = digits.substring(5);

        updatedText = String.format(Locale.US, "%s-%s-%s", firstPart, secondPart, thirdPart);
    }
}

@Override
public void afterTextChanged(Editable editable) {
    if (editing) return;

    editing = true;

    editable.clear();
    editable.insert(0, updatedText);

    editing = false;
}

}

Тогда выпросто примените это так

    ssnET = view.findViewById(R.id.ssnET);
    ssnET.addTextChangedListener(new SsnMask());
0 голосов
/ 13 апреля 2019

Автор input-mask-android здесь.

Библиотека фактически совместима с Java.В нашем вики с примером кода Java даже есть страница Quick Start .

...