뷰를 가로나 세로 방향으로 나열하는 레이아웃
orientation 속성에 horizontal, vertical 값으로 방향을 지정
LinearLayout을 중첩
레이아웃 클래스도 뷰이므로 다른 레이아웃 클래스에 포함할 수 있다
뷰 1개로 전체 여백 채우기 : 여백을 뷰로 채우려면 layout_weight 속성을 사용
뷰 여러 개로 여백을 나눠 채우기
<?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="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Button1"/>
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Button2"/>
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Button3"/>
</LinearLayout>

gravity : 정렬 대상은 콘텐츠
layout_gravity : 뷰 자체를 정렬하는 속성
상대 뷰의 위치를 기준으로 정렬하는 레이아웃
상대 뷰의 어느 쪽에 맞춰서 정렬할지를 정하는 속성
카드를 쌓듯이 뷰를 추가한 순서대로 위에 겹쳐서 계속 출력하는 레이아웃
대부분 뷰의 표시 여부를 설정하는 visibility 속성을 함께 사용
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button2"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src = "@mipmap/ic_launcher"/>
</FrameLayout>

visibility 속성을 바궈 버튼은 숨기고 이미지는 보이도록 설정함
package com.example.kotlin_07
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.button.setOnClickListener{
binding.button.visibility = View.INVISIBLE
binding.imageView.visibility = View.VISIBLE
}
binding.ImageView.setOnClickListener{
binding.button.visibility = View.VISIBLE
binding.imageView.visibility = View.INVISIBLE
}
}
}
테이블 화면을 만드는 레이아웃
orientation 속성 : 가로, 세로 방향으로 뷰를 나열
줄바꿈을 자동으로 해줌
특정 뷰의 위치 조정하기
androidx에서 제공하는 라이브러리
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
상대 위치로 배치하는 RelativeLayout과 비슷하지만 더 많은 속성을 제공
레이아웃 편집기를 제공