DIAL に電話番号を入力するために、アプリケーションで EditField を使用しています。
今私の質問は、
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 でこれを行う方法を教えてください。
edittext に textWatcher を追加し、上限を変更します
これがあなたの解決策に対する答えです。ヒントタイプだけの非常に貧弱なソリューションですが、必要に応じてコードを変更できます
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);
}
});
これが役立つかどうか教えてください