我想添加遮罩.. 像00000-0000000-0
etusercnic.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
try {
String str = s.toString();
if (s.length() == 5 || s.length() == 13) {
str += "-";
etusercnic.setText(str);
etusercnic.setSelection(str.length());
}
} catch (Exception ignored) {
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
当我第一次输入值时,它完美地工作,但当我删除它放置的任何数字时 - 签名。那我该怎么办..
答案 0 :(得分:3)
我确定你为CNIC屏蔽了它:D
无论如何,这是我的掩版版本,它完美无缺:
etusercnic.setRawInputType(InputType.TYPE_CLASS_NUMBER);
etusercnic.addTextChangedListener(new TextWatcher() {
int len = 0;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
String val = etusercnic.getText().toString();
if((val.length()==5 && len <val.length()) || (val.length()==13 && len<val.length())){
etusercnic.append("-");
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
String str = etusercnic.getText().toString();
len = str.length();
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
您的Edittext的xml应该与此类似:
<EditText
android:id="@+id/nic_field"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/signup_cnic_hint"
android:singleLine="true"
android:inputType="date"
android:maxLength="15"
android:textColor="#000000"
android:textColorHint="#808080"
android:textSize="15sp"
/>
答案 1 :(得分:0)
祝你的项目好运!我知道在Android Studio的Android程序中使用EditText上的遮罩的最简单方法是使用MaskedEditText
库(GitHub link)。
它是一种带有Watcher的自定义EditText,允许您设置不同颜色的提示(如果您想要,即使用户已经开始输入也可用),掩码并且它非常易于使用: - )
在你的情况下这很容易:
compile 'ru.egslava:MaskedEditText:1.0.5'
<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="#####-#######-#"
android:hint="0000000000000"
app:keep_hint="true"
/>
就是这样!祝你好运!
答案 2 :(得分:-1)
经过一些帮助..我找到了办法。正确答案......完美的工作。 :)
etusercnic.addTextChangedListener(new TextWatcher() {
int len = 0;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
String str = etusercnic.getText().toString();
len = str.length();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
try {
String str = s.toString();
String val = etusercnic.getText().toString();
if ((val.length() == 5 && len < val.length()) || (val.length() == 13 && len < val.length())) {
str += "-";
etusercnic.setText(str);
etusercnic.setSelection(str.length());
}
} catch (Exception ignored) {
}
}
@Override
public void afterTextChanged(Editable s) {
}
});