안드로이드/androidstudio
[Android] 동적으로 View, Layout 크기, 위치 변경 (LayoutParams)
안드로이드멩이
2023. 10. 12. 11:25
안녕하세요. 이번 포스팅에서는 버튼이나 특정 조작, 조건에 맞춰 view 혹은 layout의 크기나 위치를 변경하는 방법을 포스팅하겠습니다.
xml로 ui 개발을 한다면 xml파일 미리 다 그려둔 상태일겁니다. 근데 개발을 하다보면 조건에따라 특정 view 혹은 layout에 대해 위치나 크기 등을 변경해야할때가 있습니다.
이럴때 컴포즈가 아니라면 layoutParams를 통해서 수정이 가능합니다.
간단한 코드로 먼저 보겠습니다.
val layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT)
최초 정의시 layout의 width와 height 을 인자로 넣습니다. 이후 각 layout에 맞춰 추가적인 요소 margin이나 padding 값, 각 layout에 맞춰 위치값도 수정이 가능합니다!
binding.특정view.layoutParams =
ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
).apply {
startToStart = ConstraintLayout.LayoutParams.PARENT_ID
endToEnd = ConstraintLayout.LayoutParams.PARENT_ID
topToBottom = binding.다른view.id
}
위와 같이 원하는 layout을 지정하여 LayoutParams로 width와 height 세팅 후 apply를 통해 다른 크기, 위치 등을 세팅하면 변경이 가능합니다.
이떄 만약 크기를 명확한 값으로 고정하려면 dp 값을 사용하는데 px 단위로 되어있어 값 조정이 필요합니다.
위 과정을 통해서 xml에 작성되어있던 ui를 상황에 맞춰 동적으로 변경이 가능합니다.
다만 특정 상황에 맞춰 변경이 바로 안될경우 poostDelay 등 지연을 통해서도 변경되도록 할수있습니다.