android - 如何使 {EditText} 接受格式输入:
问题描述
车牌号(车牌号) - 2chars-2digit-2chars-4chars
我尝试使用此资源进行一些修改自定义格式编辑文本输入,但不幸的是我无法删除连字符(-)。只要有连字符(-),我就无法删除它。请帮助我找出问题所在。
解决方案
您无法删除连字符,因为在 中ontextchanged
,当您到达连字符位置时,您再次添加了连字符。
您应该通过添加文本或删除文本来区分是否需要连字符。
如果您通过删除文本到达连字符位置,您不想添加连字符。
您可以通过此代码检查if(before-count<0){
以下是您的工作示例
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if ((editText.getText().length() + 1 == 3 || editText.getText().length() + 1 == 6 || editText.getText().length() + 1 == 9)) {
if(before-count<0){
editText.setText(editText.getText() + "-");
editText.setSelection(editText.getText().length());
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
}
XML
android:maxLength="13"
推荐阅读
- python - 熊猫:选择索引,然后选择多索引切片上的列
- intellij-idea - Force push keyboard shortcut in IntelliJ IDEA 2018.1
- html - 如何将模式的第一个字符与其余字符分开?
- r - Fill a polygon with gradient scale in R
- tensorflow - 在带有 AMD Radeon Pro 450 2048 MB 的 Mac High Sierra 10.13.4 上支持 GPU 的 Tensorflow?
- java - 如何将小 ORC 文件合并或合并为更大的 ORC 文件?
- logging - 将日志文件输出到集群选项
- html - Why does my footer have elements under it?
- c - AES decryption without padding in crypt file
- python - 使用带有多个参数的函数与`map`