RelativeLayout는 Android의 ViewGroup 중 하나로, 자식 뷰들을 부모나 다른 자식 뷰에 상대적으로 배치하도록 해주는 레이아웃입니다. 각 자식 뷰는 XML 속성이나 코드에서 규칙(rules)을 지정하여 위/아래/왼쪽/오른쪽, 기준선 정렬, 중앙 정렬 등으로 위치를 결정할 수 있습니다. 주요 특징과 속성 - 상대적 배치: android:layout_below, android:layout_above, android:layout_toRightOf, android:layout_toLeftOf 등으로 다른 뷰를 기준으로 배치. - 부모 기준 정렬: android:layout_alignParentTop, android:layout_alignParentBottom, android:layout_centerInParent 등. - 기준선 정렬: android:layout_alignBaseline로 텍스트 기준선 정렬 가능. - RTL(오른쪽-왼쪽) 지원: API 17 이상에서 start/end 속성(android:layout_toEndOf, android:layout_alignParentStart 등)을 사용하면 방향성에 따라 자동으로 조정됨. - 코드에서 설정: RelativeLayout.LayoutParams의 addRule(int verb, int anchor) 또는 addRule(int verb)로 규칙을 추가. 간단한 XML 예 코드에서 규칙 설정(간단 예) RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( WRAP_CONTENT, WRAP_CONTENT); lp.addRule(RelativeLayout.BELOW, R.id.title); button.setLayoutParams(lp); 언제 사용하는가 - 뷰들 간의 상대적 관계를 표현하기 편할 때 유용. - 단순한 상대 배치에는 적합하지만, 복잡한 화면 제약을 많이 쓰면 제약을 설정하기 번거롭고 성능이나 유지보수 측면에서 불리할 수 있음. - 복잡한 레이아웃이나 성능 최적화가 필요하면 ConstraintLayout 사용을 권장(비슷한 상대 배치 기능을 더 효율적으로 제공). 요약: RelativeLayout은 자식 뷰를 부모나 다른 뷰에 상대적으로 배치할 수 있게 해주는 Android의 레이아웃으로, 간단한 상대 배치에는 편리하지만 복잡한 레이아웃에는 ConstraintLayout이 더 권장됩니다.