Android는 gravity와 layout_gravity 두 가지 속성을 모두 지원합니다. 두 속성은 이름이 비슷하지만 역할이 완전히 다릅니다.
android:gravity는 뷰 내부의 콘텐츠(텍스트 등)가 어떻게 정렬될지를 결정하는 속성입니다. 반면 android:layout_gravity는 뷰 자체가 부모 레이아웃 안에서 어디에 위치할지를 결정합니다.
android:gravity 사용 예시
아래 코드처럼 TextView에 gravity를 적용하면 텍스트가 뷰 내부에서 정렬됩니다.
<TextView
android:id = "@+id/button"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:gravity = "center"
android:text = "Click here to hide" />
위 코드에서 TextView의 너비는 match_parent이고 gravity가 center로 설정되어 있으므로, 텍스트가 화면 가운데에 배치됩니다.
gravity의 주요 속성값
- center — 뷰 내용을 부모 레이아웃의 정중앙에 배치합니다.
- right — 뷰 내용을 오른쪽에 배치합니다.
- left — 뷰 내용을 왼쪽에 배치합니다.
- end — 뷰 내용을 끝 위치(오른쪽)에 배치합니다.
- start — 뷰 내용을 시작 위치(왼쪽)에 배치합니다.
- top — 뷰 내용을 위쪽에 배치합니다.
- bottom — 뷰 내용을 아래쪽에 배치합니다.
- center_vertical — 세로 방향으로 가운데 정렬합니다. 자식 뷰의 높이가 MATCH_PARENT여야 합니다.
- center_horizontal — 가로 방향으로 가운데 정렬합니다. 자식 뷰의 너비가 MATCH_PARENT여야 합니다.
android:layout_gravity 사용 예시
layout_gravity는 gravity와 유사하지만, 뷰 자체를 부모 레이아웃의 특정 위치나 모서리에 배치할 때 사용합니다.
<EditText
android:id = "@+id/editext"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_gravity = "right">
</EditText>
위 예제에서 layout_gravity를 right로 설정했기 때문에 EditText가 부모 뷰의 오른쪽에 배치됩니다.
실습 예제: gravity와 layout_gravity의 차이 확인하기
아래 단계를 따라 두 속성의 차이를 직접 확인해 보겠습니다.
1단계 — Android Studio에서 File ⇒ New Project를 선택하고 필요한 정보를 입력해 새 프로젝트를 생성합니다.
2단계 — res/layout/activity_main.xml 파일에 다음 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:tools = "https://schemas.android.com/tools"
android:id = "@+id/rootview"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "vertical"
tools:context = ".MainActivity">
<EditText
android:id = "@+id/editext"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_gravity = "right"></EditText>
<TextView
android:id = "@+id/button"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:gravity = "center"
android:text = "Click here to hide" />
</LinearLayout>
앱을 실행해 결과를 확인해 보세요. 실제 Android 기기를 컴퓨터에 연결한 상태에서 Android Studio의 툴바에 있는 Run 아이콘을 클릭하고, 실행할 기기를 선택하면 됩니다.

실행 결과를 보면 TextView에는 gravity가 center로 설정되어 텍스트가 부모 뷰의 가운데에 표시되고, EditText에는 layout_gravity가 right로 설정되어 뷰 자체가 부모 뷰의 오른쪽에 배치된 것을 확인할 수 있습니다.
정리
- gravity: 뷰 내부 콘텐츠의 정렬 방식을 지정합니다.
- layout_gravity: 뷰 자체가 부모 레이아웃 내에서 위치하는 곳을 지정합니다.