728x90

LinearLayout의 자식 View에는 가중치를 부여할 수 있다.

가중치는 layout_weight 로 표현되며 가중치는 정수로 표현되며 자식뷰의 중요도를 나타낸다.

LinearLayout 의 자식 View들의 가중치가 각각 1, 2, 3 이면 남아있는 공간의 1/6, 2/6, 3/6을 각각 할당한다.

자식 View의 가중치를 지정하지 않으면 android:layout_weight="0" 으로 간주하고 확장하지 않는다.

 

layout_gravity : 부모 컨테이너의 여유 공간에 View가 모두 채워지지 않아 여유 공간 안에서 View를 정렬할 때

gravity : View 에서 화면에 표시하는 내용물을 정렬할 때

 

 

weight는 비율을 주는 속성인데 width나 height중 비율을 주고싶은 속성에 0dp를 줘야한다.
여기선 한줄을 똑같이 나눠가지길 원하니까 width의 값에 0dp를 주어야한다.
또 항목들을 감싸고 있는 레이아웃에 weigthSum값을 지정해 주어야 하는데 이것은 선택사항이다.
weight는 비율 값이라 0.00~1.00까지의 값을 가진다.

weighSum은 하위 각각 레이아웃 weight의 값의 합이 되어야 하며 값을 초과하게될 경우 레이아웃이 View에서 벗어나게 된다.

 

<?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="wrap_content"
    android:orientation="horizontal"
    android:weightSum="5">

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="1" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:text="2" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="3" />

</LinearLayout>

 

 

실전 예제

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal"
        android:background="@drawable/bg_border">
 
        <TextView
            android:id="@+id/line_rank"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.5"
            android:layout_gravity="center"
            android:textAppearance="@style/TextAppearance.AppCompat.Large"
            android:textColor="?android:attr/textColorSecondary"
            android:gravity="center"
            android:textStyle="bold"
            tools:text="1" />
 
        <View
            android:layout_width="0.5dp"
            android:layout_height="match_parent"
            android:background="@color/colorDivider"
            android:layout_gravity="center_vertical"
            android:layout_marginEnd="15dp"
            android:layout_marginStart="10dp"/>
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="5"
            android:orientation="vertical">
 
            <TextView
                android:id="@+id/line_name"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:gravity="left|center_vertical"
                android:ellipsize="end"
                android:maxLines="1"
                android:singleLine="true"
                android:text="가든파이브"
                android:textColor="@color/colorDarkGray"
                android:textAppearance="?textAppearanceSubtitle1"
                android:textSize="14dp" />
 
            <TextView
                android:id="@+id/line_address"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:gravity="left|center_vertical"
                android:ellipsize="end"
                android:singleLine="true"
                android:maxLines="1"
                android:textColor="#999"
                android:textSize="11dp"
                android:textAppearance="?textAppearanceSubtitle1"
                tools:text="서울시 송파구 문정동 충민로 66" />
 
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:background="@android:color/transparent"
            android:layout_gravity="center"
            android:orientation="vertical">
            <TextView
                style="?attr/textAppearanceSubtitle2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="부동산"/>
 
            <TextView
                android:id="@+id/estate"
                style="?attr/textAppearanceSubtitle2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:textColor="@color/blue_700"
                android:maxLines="1"
                android:text="50"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:background="@android:color/transparent"
            android:layout_gravity="center"
            android:orientation="vertical">
            <TextView
                style="?attr/textAppearanceSubtitle2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="계약자"/>
 
            <TextView
                android:id="@+id/contractor"
                style="?attr/textAppearanceSubtitle2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:textColor="@color/blue_700"
                android:maxLines="1"
                android:text="50"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:background="@android:color/transparent"
            android:layout_gravity="center"
            android:orientation="vertical">
            <TextView
                style="?attr/textAppearanceSubtitle2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="예약자"/>
 
            <TextView
                android:id="@+id/reservation"
                style="?attr/textAppearanceSubtitle2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:textColor="@color/blue_700"
                android:maxLines="1"
                android:text="50"/>
        </LinearLayout>
 
    </LinearLayout>
</LinearLayout>

 

https://link2me.tistory.com/2039 에 Android Material Design 적용한 칼라 색상 정리해 놓은 자료가 있다.

728x90

'안드로이드 > Layout' 카테고리의 다른 글

Android Fragment 기본 예제  (0) 2018.09.11
FloatingActionButton(FAB)  (0) 2018.08.15
Android ViewFlipper(뷰플리퍼)  (0) 2017.05.02
Fragment 화면 이동  (0) 2017.03.26
안드로이드 Layout  (0) 2016.07.23
블로그 이미지

Link2Me

,