如何让 {EditText} 接受格式输入:
How to make {EditText} accept input in format:
车牌号(车牌号)- 2chars-2digit-2chars-4chars
我对这个资源做了一些修改 Custom format edit text input ,但不幸的是我无法删除连字符 (-)。每当有连字符 (-) 时,我都无法删除它。请帮我找出问题所在。
您无法删除连字符,因为在 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"
车牌号(车牌号)- 2chars-2digit-2chars-4chars
我对这个资源做了一些修改 Custom format edit text input ,但不幸的是我无法删除连字符 (-)。每当有连字符 (-) 时,我都无法删除它。请帮我找出问题所在。
您无法删除连字符,因为在 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"