在Android中创建自定义InputMask

时间:2019-03-28 14:04:13

标签: android input-mask

如何在Android中创建自定义输入掩码。 例如,需要DFSU 618908,这意味着开头的4位数字是字母,然后是空格,然后是7位数字。

在Web开发中,我可以使用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 个答案:

答案 0 :(得分:1)

以下是使用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());

答案 1 :(得分:0)

这里是input-mask-android作者。

该库实际上可与Java互操作。我们的Wiki中甚至还有一个Quick Start页面,其中包含Java示例代码。