android, how to add comma in the EditText. |
1. xml 상 EditText 에 , 를 입력할 수 있게 한다. ( android:inputType = "numberDecimal" 로 가정 )
<item name="android:digits">"0123456789.,"</item>
2. EditText 에 TextWatcher 추가
mEditText.addTextChangedListener( mEditTextTextWatcher );
private TextWatcher mTextTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) {
addSeparator( mEditText, this );
}
};
private void addSeparator( EditText editText, TextWatcher watcher ){
Editable s = editText.getEditableText();
if ( TextUtils.isEmpty( s.toString() ) ) return;
editText.removeTextChangedListener( watcher );
s.replace( 0, s.length(), getCommaSeparatedString( s ) );
editText.addTextChangedListener( watcher );
}
private String getCommaSeparatedString( Editable editable ){
NumberFormat formatter = new DecimalFormat( "###,###.##" );
return formatter.format( Double.parseDouble( editable.toString().replace( ",", "" ) ) );
}
완벽한 녀석은 아니다. 약간의 debugging 과 소스 수정은 필요하다. ( 소수점 이하에 0 을 입력할 경우 등에 대한 처리 ) 여튼 저런 방식으로 하면 된다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] multiple layers of defense. (0) | 2014.01.03 |
---|---|
[Java] Reflection Tutorial - Dynamic Proxies (0) | 2014.01.03 |
[Java] Reflection Tutorial - Array (0) | 2013.12.30 |
[android] navigation drawer close and open listener set. (0) | 2013.12.27 |
[Java] Reflection Tutorial - Generics (0) | 2013.12.27 |
댓글