본문 바로가기
개발/Android

[Android] LayoutParams 정리

by 1인용 놀이터 2025. 5. 26.
728x90
반응형

LayoutParams 란?

Kotlin(Android)에서 Activity에서 View를 코드로 동적으로 추가할 때 LayoutParams는 부모 레이아웃에 맞춰 뷰의 크기와 위치를 지정하는 필수 요소이다.

  • 뷰의 너비(width), 높이(height), 여백(margin), 정렬 방식 등을 지정하는 객체
  • 부모 레이아웃 종류에 따라 다른 LayoutParams 클래스를 사용

예시 : TextView의 너비는부모에 맞추고, 높이는 내용만큼 설정해라.▽ 

val layoutParams = LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
)
myTextView.layoutParams = layoutParams

 

핵심 구성요소

요소 설명
width View의 너비 (px, MATCH_PARENT, WRAP_CONTENT, 숫자 등)
height View의 높이
margin 바깥 여백 (위, 아래, 좌우)
gravity View 내부 콘텐츠의 정렬
weight LinearLayout에서 뷰들 간 비율 분배

 

반드시 기억할 점

LayoutParams는 부모 레이아웃에 따라 달라져야 한다.

잘못 된 LayoutParams를 사용하면 앱이 터지거나 뷰가 안보일 수 있다.

부모 레이아웃 LayoutParams
LinearLayout LinearLayout.LayoutParams
RelativeLayout RelativeLayout.LayoutParams
FrameLayout FrameLayout.LayoutParams
ConstraintLayout ConstraintLayout.LayoutParams
GridLayout GridLayout.LayoutParams

 

 

Layout 별 예시

1. LinearLayout

val textView = TextView(this).apply {
    text = "Hello"
    textSize = 20f
}

val layoutParams = LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
)

layoutParams.setMargins(16, 16, 16, 16)
textView.layoutParams = layoutParams

linearLayout.addView(textView)

 

2. GridLayout

val gridLayout = findViewById<GridLayout>(R.id.gridLayout)

val button = Button(this).apply {
    text = "1"
}

val params = GridLayout.LayoutParams().apply {
    width = 0
    height = WRAP_CONTENT
    columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f) //이 View가 어느 **열(column)**에 들어갈지, 몇 칸 차지할지
    rowSpec = GridLayout.spec(GridLayout.UNDEFINED) //	어느 **행(row)**에 들어갈지, 몇 칸 차지할지
    setMargins(8, 8, 8, 8)
}

gridLayout.addView(button, params)
  • GridLayout.spec() 상세
GridLayout.spec(start: Int, size: Int, weight: Float = 0f)

// 열 2번째(인덱스 1)에서 시작해서 2칸 차지, 비율은 1
columnSpec = GridLayout.spec(1, 2, 1f)
728x90
반응형