본문 바로가기

Programming/android

EditText에 화폐단위(,) 붙이기.


목적 : 에딧텍스트에 숫자가 바뀔때마다, 3자리 숫자 단위로 콤마(,)를 찍어준다.

XML파일은 다음과 같다. 별다를 것 없는...
<EditText android:inputType="number" android:gravity="right" android:singleLine="true" android:layout_width="wrap_content" android:layout_height="wrap_content" />

자바 파일은 다음과 같다.

// 세자리로 끊어서 쉼표 보여주고, 소숫점 셋째짜리까지 보여준다.
DecimalFormat df = new DecimalFormat("###,###.####");
// 값 셋팅시, StackOverFlow를 막기 위해서, 바뀐 변수를 저장해준다.
String result="";

// 숫자가 바뀔때마다, 새로 셋팅을 해주어야 하므로, ChangeListener를 단다.

meterEditText.addTextChangedListener(new TextWatcher(){

            @Override
            public void afterTextChanged(Editable s) {}

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
 
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                 if(!s.toString().equals(result)){     // StackOverflow를 막기위해,
                    result = df.format(Long.parseLong(s.toString().replaceAll(",", "")));   // 에딧텍스트의 값을 변환하여, result에 저장.
        meterEditText.setText(result);    // 결과 텍스트 셋팅.
        meterEditText.setSelection(result.length());     // 커서를 제일 끝으로 보냄.
                }                
            }
        }); 

별것 아니지만, 애먹었네요, 

'Programming > android' 카테고리의 다른 글

가로모드에서 editText 키보드가 화면을 덮을때 !  (1) 2011.05.25
유튜브 연결 인텐트  (0) 2011.05.23
텍스트 마퀴효과  (0) 2011.04.21
전화걸기 인텐트  (0) 2011.04.21
SurfaceView 사용방법  (0) 2011.04.07