xml의 layout_gravity에 대한 숨겨진 규칙


안드로이드 앱 개발을 하다보면 

xml 레이아웃 파일에서 조정하는 작업들이 

생각처럼 잘 안 먹혀 들어갈 때가 있다.

특히 layout_gravity에 대해 작업할 때

그런 경험을 자주 하게 된다.

그 이유는 이런 개념 때문이다.



<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    <Button

           android:id="@+id/btnPlus"

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:padding="10dip"

           android:text=" 테스트 "

           android:layout_gravity="center"

           android:textSize="25sp" />

</LinearLayout>


LinearLayout의 orientation이 vertical일 경우 

Button의 layout_gravity는 수평 관련 속성만 적용이 된다.

예를 들어 layout_gravity="left" 혹은 center_horizontal 혹은 right와 같이 수평 관련 속성만 적용이 된다.

수직 관련 속성은 적용이 안된다. 

예를 들어서 layout_gravity="bottom", 혹은 top...은 적용이 안된다.


만일 orientation이 horizontal이라면 

Button의 layout_gravity는 수직 관련 속성만 적용이 된다.

bottom, top, center_vertical


이 이야기의 핵심은 LinearLayout에서 첫 번째 방향을 설정했으면(만일 수평이면) 두 번째 방향 설정(layout_gravity)에서는 수평이 상태에서 그 수평 중 어느 위치로 움직일 것인지를 결정하는 것만 허용이 된다는 것이다.

즉 수평이 첫 번째 설정 값이면(LinearLayout에서) 그 수평 중 top에 놓일지, bottom에 놓일지, center_vertical에 놓일지만 결정한다는 뜻이다.


+ Recent posts