728x90
사용자에게 화폐를 입력받아 표시할 경우가 발생합니다.
이럴 때 입력 받은 숫자를 원화 단위로 바꿔주는 방법입니다.
1. 결론
2. 레이아웃 구성
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.charlie.wontest.MainActivity">
<EditText
android:id="@+id/WonEt"
android:hint="금액을 입력해주세요."
android:paddingLeft="8dp"
android:textSize="18sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:layout_centerInParent="true"
android:inputType="number"
/>
</RelativeLayout>
EditText 를 다음과 같이 준비합니다.
2-2 화폐 단위 표시하기
화폐 단위를 표시하기 위해서 DecimalFormat 을 사용합니다.
private DecimalFormat decimalFormat = new DecimalFormat("#,###");
private EditText wonEt;
private String result="";
private DecimalFormat decimalFormat = new DecimalFormat("#,###");
이 부분이 원화 단위로 글자를 변경 시켜주는 부분입니다.
wonEt = (EditText) findViewById(R.id.wonEt);
wonEt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
String price = wonEt.getText().toString();
if (hasFocus) {
if (!price.isEmpty()){
wonEt.setText(price)
wonEt.setSelection(result.length());
}
} else {
if (!price.isEmpty()) {
result = decimalFormat.format(Integer.parseInt(price));
wonEt.setText(result + "원");
wonEt.setSelection(wonEt.getText().toString().length());
}
}
}
});
다음 과 같이 FocusChangeListener를 EditText에 달면 화폐단위가 파싱됩니다.
'안드로이드 자바' 카테고리의 다른 글
[Android][Java] 리사이클러뷰 어댑터 (2) | 2022.10.03 |
---|---|
[JAVA][Android] Canvas, Paint를 이용해 그림판 만들기 (0) | 2022.10.02 |
[Java][Android] Alert Dialog 다이얼로그 띄우고 Back 버튼 뒤로가기 막기 (0) | 2022.09.28 |
[Java][Android] 화면 꺼지지 않게 하기(켜짐 상태 유지) (2) | 2022.09.13 |
[Java][Android] 화면이 회전 되었을 때 이전 액티비티의 데이터 유지하기 (0) | 2022.08.29 |