如何在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
答案 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示例代码。