첫문자를 숫자를 입력할 경우숫자만 입력되고
첫문자를 영어를 입력할 경우 영어만 입력되는 예제
private EditText mEdit;
@Override
protected void onCreateX(Bundle savedInstanceState) {
mEdit = (EditText)findViewById(R.id.test_edit);
mEdit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if(count == 0){
mEdit.setFilters(new InputFilter[]{filterAll});
}else if(count == 1){
if(isNumber(s.toString())){
mEdit.setFilters(new InputFilter[]{filterNum});
}else{
mEdit.setFilters(new InputFilter[]{filterEng});
}
}
}
@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
}
});
}
public static boolean isNumber(String str){
boolean result = false;
try{
Double.parseDouble(str) ;
result = true ;
}catch(Exception e){}
return result ;
}
private InputFilter filterNum = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
// TODO Auto-generated method stub
Pattern ps = Pattern.compile("^[0-9]+$");
if(!ps.matcher(source).matches()){
return "";
}
return null;
}
};
private InputFilter filterEng = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
// TODO Auto-generated method stub
Pattern ps = Pattern.compile("^[a-zA-Z]+$");
if(!ps.matcher(source).matches()){
return "";
}
return null;
}
};
private InputFilter filterAll = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
return source;
}
};
'Android' 카테고리의 다른 글
Manifest에 정의된 값 가져오기 (0) | 2017.10.11 |
---|---|
안드로이드 Manifest android:excludeFromRecents속성 (0) | 2017.07.04 |
안드로이드 파일 이름및 확장자 가져오기 (0) | 2017.05.23 |
안드로이드 파일 캐시 (0) | 2017.05.23 |
안드로이드 File 복사 (2) | 2017.05.23 |