상세 컨텐츠

본문 제목

안드로이드(ANDROID) - 동적 버튼 생성하기

Android 자료실/기능 개발

by Victorywskim 2020. 3. 26. 15:12

본문

반응형

자주 있는 일은 아니지만 간혹 동적으로 버튼 생성이 필요할 경우도 있다.

 

그런 경우는 아래 소스코드와 같이 구현하면 된다.

 


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

    for(id in 0 until 10){
        val normalBtn4 = Button(this).apply{
            width = getDPI(200)
            height = getDPI(200)
            setOnClickListener {
                btnAction(id)
            }
        }
        // LinearLayout에 버튼 추가하기
        bodyView.addView(normalBtn4)
    }
}

fun btnAction(id: Int){
    when(id){
        in 0..3 -> {
            Toast.makeText(this, "0~3번의 아이디를 가진 버튼입니다.", Toast.LENGTH_SHORT).show()
        }
        
        4 -> {
            Toast.makeText(this, "${id}번의 아이디를 가진 버튼입니다.", Toast.LENGTH_SHORT).show()
        }
    }
}

// 버튼의 width 및 height는 픽셀 값을 요구하지만 dp값이 디자인 작업에
// 유리하기 때문에 내가 원하는 DP값을 받아서 PX로 변환하는 함수
fun getDPI(dp: Int): Int {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp.toFloat(), resources.displayMetrics)
        .toInt()
}

 

코드에 설명은 간략히 하자면 다음과 같다.

 

1. 최초 액티비티 생성 시 버튼을 생성한다.

2. XML에 작성된 LinearLayout에 버튼을 추가한다.

3. 1, 2번 작업을 10번 반복한다.

4. 작성된 버튼을 터치하면 btnAction의 id에 맞는 액션이 발생한다.

 

쓸 일이 자주 있는 건 아니지만 알아두면 유용할 듯하다.

728x90
반응형

관련글 더보기