JY-Dev Tech Blog

안드로이드(Android) - Addview(동적으로 View를 생성해서 추가하는 방법) 본문

안드로이드/레이아웃

안드로이드(Android) - Addview(동적으로 View를 생성해서 추가하는 방법)

JY-Dev 2020. 7. 8. 11:44

[OverView]

안녕하세요 이번시간에는 동적으로 View를 레이아웃에 추가하는 방법에 대해 알아보겠습니다.

 

일단 처음에 동적으로 만든 View를 추가할곳인 Parent View를 xml에 작성해 줍시다. 

 

이렇게 작성 하셨으면 이 Parent View에 id를 추가해줍니다. 저는 parent_layout으로 id를 설정해줬습니다.

 

이제는 메인코드에서 작성을 할겁니다.

일단 Parent View에 동적으로 View를 생성해서 넣어주려면 일단 동적으로 View 생성을 먼저 해야겠죠?

일단저는 동적으로 버튼을 생성해 보겠습니다.

 

먼저 함수를 하나 만들어주겠습니다.

 

함수에서는 버튼을 생성해서 return 해줄거기때문에 return 값을 View를 설정해줍니다.

그리고 나서 버튼객체를 만들어주겠습니다.

button 변수는 값을 변경할게 아니라서 val로 선언했습니다.

 

val button = Button(this)

 

그리고 버튼에 텍스트를 넣어주겠습니다.

button.text = "버튼입니다."

 

이제는 가장중요한 버튼의 크기를 설정해주는 width랑 heigth를 설정해주겠습니다.

이것을 설정할때 linearLayout의 LayoutParams로 객체를 만들어서 넣어줘야합니다.

 

저같은 경우는 둘다 WRAP_CONTENT로 설정해줬습니다.

 

val lp = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)

 

여기서 weight를 설정해 주고싶으시면 뒤에 Float 값으로 weight를 추가해서 설정해줄 수 있습니다.

val lp = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1F)

그리고 이 만들어논 객체를 Button의 layoutParams에 넣어주면 설정이 끝납니다.

button.layoutParams = lp

 

만약 여기서 OnClickListener를 설정하고 싶으시다면 이런식으로 해주시면 됩니다.

button.setOnClickListener {
     Toast.makeText(this, "버튼입니다.", Toast.LENGTH_SHORT).show()
}

 

그리고 id를 설정해줄 수 있는데 자동적으로 id를 생성해주는 함수가 ViewCompat안에 있습니다.

button.id = ViewCompat.generateViewId()

그리고 마지막으로 Button을 return 해줍니다.

 

이제 addview를 시켜줄 겁니다.

이런식으로 Parent View에 아까 생성해준 함수를 addview에 넣어주면 버튼이생깁니다.

이상으로 여기서 마치겠습니다.

Comments