상세 컨텐츠

본문 제목

[안드로이드 코틀린] 포커스 이벤트 숫자(천 단위) 콤마 넣는 방법

안드로이드

by aries574 2022. 7. 18. 10:54

본문


이번 시간에는 OnFocusChangeListener을 사용해서 EditText에 숫자를 입력하면 포커스 상태에 따라 콤마 표시를 해주는 방법에 대하여 알아보겠습니다.


목차

1. 실행 화면
2. 메인 화면 구현 activity_main.xml
3. 메인 코드 구현 MainActivity.kt 


1. 실행 화면


2. 메인 화면 구현 activity_main.xml

- 설명 -

포커스에 따른 콤마 표시를 해줄 EditText

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/price_edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="가격1"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="가격2"/>
</LinearLayout>

 

 

3. 메인 코드 구현 MainActivity.kt 

- 설명 -

1. View.OnFocusChangeListener { view, hasFocus ->

hasFocus 파라미터 값을 통해 해당 뷰에 포커스 상태를 파악할 수 있습니다.

2. isNotEmpty()

값이 있는지 체크하는 함수, 값이 있다면 true 없다면 false

3. toLongFormat

콤마 표시를 해주는 함수

class MainActivity : AppCompatActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //객체 생성
        val priceEdit: EditText = findViewById(R.id.price_edit)

        //포커스 이벤트(포커스 변경시에 실행)
        priceEdit.onFocusChangeListener = View.OnFocusChangeListener { view, hasFocus ->

            //입력값 변수에 담기
            val price: String = priceEdit.text.toString()

            //EditText에 포커스가 있다면
            if(hasFocus){

                //값이 있을때만
                if(price.isNotEmpty()){
                    //, 를 공백으로 변경
                    priceEdit.setText(price.replace(",", ""))
                }

            }else{//EditText에 포커스가 없다면

                //값이 있을때만
                if(price.isNotEmpty()){
                    //콤마 표시
                    val lPrice: String = toLongForamt(price.toLong())
                    priceEdit.setText(lPrice)
                }
            }
        }
    }//onCreate

    //콤마 표시 함수
    private fun toLongForamt(num: Long): String{

        val df = DecimalFormat("###,###")

        return df.format(num)
    }

}

2022.07.17 - [안드로이드] - [안드로이드 코틀린] OnClickListener onClick 하나로 다중 버튼 이벤트 설정하기

 

[안드로이드 코틀린] OnClickListener onClick 하나로 다중 버튼 이벤트 설정하기

이번 시간에는 onClick 이벤트가 여러 개 있을 때 한 곳에서 쉽게 관리할 수 있는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구현 activity_main.xml 3. 메인 코드 구현 MainActivity.kt..

aries574.tistory.com

2022.07.16 - [안드로이드] - [안드로이드 코틀린] 프래그먼트(Fragment)에서 액티비티(Activity)로 데이터 보내는 방법

 

[안드로이드 코틀린] 프래그먼트(Fragment)에서 액티비티(Activity)로 데이터 보내는 방법

이번 시간에는 프래그먼트(Fragment)에서 액티비티(Activity)로 데이터를 전달하는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 인터페이스 만들기 SendEventListener.kt 3. 프래그먼트 만들기

aries574.tistory.com

2022.07.15 - [안드로이드] - [안드로이드 코틀린] 액티비티(Activity)에서 프래그먼트(Fragment)로 데이터 보내는 방법

 

[안드로이드 코틀린] 액티비티(Activity)에서 프래그먼트(Fragment)로 데이터 보내는 방법

이번 시간에는 액티비티(Activity) 화면에서 프래그먼트(Fragment) 화면으로 데이터를 전달하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 프래그먼트 만들기 MainFragment.kt 3. 메인 화면 구현 

aries574.tistory.com

 

 

반응형

관련글 더보기

댓글 영역