티스토리 뷰
리니어 레이아웃
• 자식 뷰들을 하나의 가로 또는 세로 방향으로 정리하는 레이아웃
• 부모가 될 수 있는 컨테이너 뷰
1. 속성
• orientation : 자식 뷰의 방향을 설정
- horizontal : 가로, 수평 방향.
- vertical : 세로, 수직 방향.
• android:layout_width / android:layout_height : 레이아웃의 가로 / 세로 길이
- 직접 입력 : 100dp, 5px 같이 길이를 직접 입력
- match_parent : 부모 뷰의 길이만큼으로 설정
* 만약 부모 뷰가 없는 최상위 뷰라면 화면 전체를 기준으로 삼는다.
- wrap_content : 내용물의 크기만큼 설정
• android:layout_weight : (가중치) / (전체 가중치) 비율로 부모 뷰를 차지.
ex) view1의 가중치 2, view2의 가중치 3, view3의 가중치
-> view1은 2/8, view2는 3/8, view3은 5/8 만큼의 부모 뷰를 차지.
• android:background : 배경색 설정
2. XML 태그
• LinearLayout의 xml 태그에는 <LinearLayout> 태그와 <androidx.appcompat.widget.LinearLayoutCompat> 태그가 있다.
- 기능적으로 차이가 크게 없으므로 비교적 최신에 나온 <androidx.appcompat.widget.LinearLayoutCompat>을 사용하면 된다.
* androidx에 관하여
• 개발자는 스마트폰의 하드웨어 단계나 기기의 기능에 '직접' 접근하여 제어하지 않아도 애플리케이션을 개발할 수 있다.
• 이는 안드로이드에서 제공하는 안드로이드 프레임워크 위에서 우리가 개발하고 있기 때문이다.
• 안드로이드 프레임워크란 애플리케이션 개발자가 안드로이드 OS의 전체적인 기능을 API 등을 통해 쉽게 접근할 수 있도록 안드로이드에서 제공하는 환경이다.
• 하지만 안드로이드 프레임워크도 모든 기능을 제공하지는 않는데, 이렇게 프레임워크에서 제공하지 않는 기능을 보조로 지원해주는 안드로이드 지원 라이브러리(Android Support Library)가 존재한다.
• 안드로이드 지원 라이브러리는 새 버전 API에 대한 하위 호환성이나 RecyclerView 같은 편의 클래스 등을 제공해준다.
• 기존에 사용하던 안드로이드 지원 라이브러리들을 개선하여 하나로 통합한 것이 바로 androidx이다.
• 즉, androidx는 안드로이드 프레임워크와 같이 개발자가 애플리케이션을 편하게 개발할 수 있도록 도와주는 도구이다.
ex) <androidx.appcompat.widget.LinearLayoutCompat> 태그
ex) 빈 activity를 생성하면 기본으로 구성되어 있는 <androidx.constraintlayout.widget.ConstraintLayout> 태그.
3. 실전
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:orientation="horizontal"
android:background="#FF0000">
<TextView
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#00FF00"
android:layout_margin="3dp"/>
<TextView
android:layout_width="150dp"
android:layout_height="match_parent"
android:background="#0000FF"
android:layout_margin="3dp"/>
<TextView
android:layout_width="80dp"
android:layout_height="match_parent"
android:background="#00FFFF"
android:layout_margin="3dp"/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="horizontal"
android:background="#FF0000">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="#00FF00"
android:layout_margin="3dp"/>
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:background="#0000FF"
android:layout_margin="3dp"/>
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:background="#00FFFF"
android:layout_margin="3dp"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
이 글은
패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online
강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.
'📱 Android > 🔍 UI' 카테고리의 다른 글
[Android/UI] 7. Margin(마진) & Padding(패딩) (0) | 2022.10.14 |
---|---|
[Android/UI] 6. Relative Layout(렐러티브 레이아웃) (0) | 2022.10.14 |
[Android/UI] 4. 뷰 속성 (0) | 2022.10.13 |
[Android/UI] 3. 뷰 컴포넌트(View Component) (0) | 2022.10.13 |
[Android/UI] 2. 단위 (0) | 2022.10.13 |