我正在我的应用程序中使用 EditField,将电话号码输入 DIAL。
现在我的查询是,
1) if begins with 1, it should be only 10 max digits after the 1,
2) if 011, up to 15 digits max, but no fewer than 8 after 011.
请让我知道,如何在 EditField 中完成此操作。
将 textWatcher 添加到您的 edittext 并更改最大限制
这是您的解决方案的答案。它是一个非常糟糕的解决方案,只是一种提示类型,但您可以根据自己的需要更改代码
final int LIMIT_FIRST = 10;
final int LIMIT_SECOND = 15;
final EditText et = (EditText) findViewById(R.id.edittext);
et.setSingleLine();
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String stringValue = s.toString().trim();
int stringLength = stringValue.length();
if(stringLength == 0){
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(1000);
et.setFilters(FilterArray);
}else if(stringLength == 1){
if(stringValue.equalsIgnoreCase("1")){
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(LIMIT_FIRST);
et.setFilters(FilterArray);
}
}else if(stringLength == 3){
if(stringValue.equalsIgnoreCase("011")){
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(LIMIT_SECOND);
et.setFilters(FilterArray);
}
}
System.out.println(s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
System.out.println(s);
}
@Override
public void afterTextChanged(Editable s) {
System.out.println(s);
}
});
让我知道这是否对您有帮助