記錄

레이아웃을 활용한 다양한 뷰 배치 - LinearLayout 본문

Mobile/Android

레이아웃을 활용한 다양한 뷰 배치 - LinearLayout

surhommejk 2018. 1. 11. 13:20

LinearLayout

레이아웃에 포함된 뷰를 가로나 세로로 나열하는 레이아웃이고 이는 orientation으로 제어한다.


layout_gravity vs gravity vs LinearLayout의 gravity

LinearLayout내에서 뷰의 위치를 변경하고 싶으면 뷰 내에서 layout_gravity 속성을 활용하고 뷰 내에서 컨텐츠(내용)의 위치를 변경하고 싶으면 마찬가지로 뷰 내에서 gravity를 사용한다. 단, orientation의 설정에 따라서 뷰에서의 layout_gravity는 적용이 안되는 경우가 발생한다. 예를 들어 orientation에서 horizontal설정이 되어 있다면 뷰 내에서의 layout_gravity에서 center_horizontal을 설정해도 적용이 되지 않는다. 그래서 이를 해결하기 위해서는 LinearLayout의 속성값으로 gravity를 사용해야 한다.


정리: 레이아웃 내에서 컨트롤 -> layout_ ~   //   뷰 내에서 컨텐츠 내용 위치 -> gravity


weight

여백을 배치된 뷰가 확장해서 사용할 수 있도록 해주는 것. 전체 입력된 수로 화면을 등분하여 수치만큼 화면을 할당한다. 즉 적용된 layout 단위로 비율을 나눠먹게 된다.




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="match_parent"
android:orientation="horizontal"
tools:context="com.kimjungkwon.test4_1.MainActivity">

<ImageView
android:src="@drawable/character"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:maxWidth="80dp"
android:padding="15dp"/> // 미니언즈 약간 작게 하려고 패딩 넣음

<LinearLayout // 여기서 레이아웃 중첩이 일어난다
android:layout_width="wrap_content"
android:layout_height="wrap_content" //이걸 match_parent할 경우 밑에 스샷 참고
android:orientation="vertical"
android:layout_weight="1"> // 날짜부 오른쪽으로 밀어내려고 weight값 부여

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="홍길동"
android:textSize="20dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="안녕하세요. 잘 지내시는 지요?"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"/>

</LinearLayout>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="18. 1. 11"/>

</LinearLayout>




LinearLayout 중첩시 위에 올라간 작은 LinearLayout의 height에 wrap_content와 match_parent할 경우 차이점


              



Comments