안녕하세요. 이번 포스팅에서는 버튼이나 특정 조작, 조건에 맞춰 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 등 지연을 통해서도 변경되도록 할수있습니다.
'안드로이드 > androidstudio' 카테고리의 다른 글
[Android] DataStore, Preference 활용 설정 값 저장하기 (0) | 2023.10.06 |
---|---|
[Android] NaverMap api 기기 방향 탐지 (0) | 2023.04.21 |
[Android] device 디스플레이 환경설정 크기 변경에 영향 안받기 (0) | 2023.03.05 |
[Android] Kakao Map Marker event(drag, click) (0) | 2022.12.09 |
[Android] livedata의 observe 중첩 상황 (0) | 2022.12.08 |