我正在使用我的应用程序中的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中完成此操作。
答案 0 :(得分:1)
将textWatcher添加到您的edittext并更改最大限制
答案 1 :(得分:0)
以下是您的解决方案的答案。它是一个非常差的解决方案,只是一个提示类型,但你可以根据你改变代码
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);
}
});
如果这有助于你,请告诉我