Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Android에서 gravity와 layout_gravity의 차이점은 무엇일까요?

Android는 gravitylayout_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 아이콘을 클릭하고, 실행할 기기를 선택하면 됩니다.

Android에서 gravity와 layout_gravity의 차이점은 무엇일까요?

실행 결과를 보면 TextView에는 gravity가 center로 설정되어 텍스트가 부모 뷰의 가운데에 표시되고, EditText에는 layout_gravity가 right로 설정되어 뷰 자체가 부모 뷰의 오른쪽에 배치된 것을 확인할 수 있습니다.

정리

  • gravity: 뷰 내부 콘텐츠의 정렬 방식을 지정합니다.
  • layout_gravity: 뷰 자체가 부모 레이아웃 내에서 위치하는 곳을 지정합니다.