Android 자료실/기능 개발
안드로이드(ANDROID) - 동적 버튼 생성하기
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에 맞는 액션이 발생한다.
쓸 일이 자주 있는 건 아니지만 알아두면 유용할 듯하다.
반응형