상세 컨텐츠

본문 제목

[안드로이드] 포커스이벤트 setOnFocusChangeListener

안드로이드

by aries574 2020. 5. 28. 15:03

본문


입력창에 숫자가 들어가는 경우, 포커스가 가 있는 경우와 아닌 경우 동작을  주고 싶을때 쓸 수 있는 이벤트를 알려드립니다.

 

[예제]

 EditText 를 2개 만듭니다. 

첫 번째 EditText 에 포커스가 가 있는 경우: 1000

포커스가 나간 경우: 1,000

1. activity.xml

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <EditText
        android:id="@+id/ePrice"
        android:layout_marginTop="20dp"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="가격1"
        />
        
          <EditText
        android:id="@+id/ePrice2"
        android:layout_marginTop="20dp"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="가격2"
        />
</LinearLayout>

 

2. MainActivity.java

EditText ePrice;
EditText ePrice2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ePrice = findViewById(R.id.ePrice);

// 가격 포커스 이벤트
ePrice.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
//포커스일때 콤마를 빼준다.
String price = ePrice.getText().toString();
if(!price.equals("")){
ePrice.setText(price.replace(",",""));
}


}else{
// //포커스가 아닐때 콤마를 넣어준다(1,000)
String price = ePrice.getText().toString();
if(!price.equals("")){
String lPrice = toLongFormat(Long.parseLong(price));
ePrice.setText(lPrice);
}

}
}
});
}


/**
* 1000자리 콤마
* @param num
* @return
*/
public String toLongFormat(Long num) {
DecimalFormat df = new DecimalFormat("###,###");
return df.format(num);
}
반응형

관련글 더보기

댓글 영역