我有在第 5 位和第 12 位数字后添加破折号的代码,但是在删除这些数字时,按退格键后破折号不会被删除。删除最后一位后卡住了。
这是我从堆栈链接之一实现的代码。
EditText Cnic;
int maxLength = 15;
int len =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Cnic = (EditText)findViewById(R.id.cnic_edtext);
Cnic.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
Cnic.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) {
String str = s.toString();
if(s.length() == 5 || s.length() == 13){
str += "-";
Cnic.setText(str);
Cnic.setSelection(str.length());
}
}
@Override
public void afterTextChanged(Editable s) {
String str = s.toString();
len = str.length();
}
});
}
我使用图书馆解决了它 import tw.henrychuang.lib.AutoAddTextWatcher;
EditText Cnic;
int maxLength = 15;
String str;
Button save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Cnic = (EditText)findViewById(R.id.cnic_edtext);
save = (Button)findViewById(R.id.save_btn);
Cnic.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
Cnic.setKeyListener(new DigitsKeyListener().getInstance("0123456789-"));
Cnic.addTextChangedListener(new AutoAddTextWatcher(Cnic,
"-",
5, 12));
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
str = Cnic.getText().toString();
Toast.makeText(MainActivity.this, "Cnic "+str, Toast.LENGTH_SHORT).show();
}
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句