이 Repository는 Philipp Lackner의 Compose Masterclass 강의를 들으며 학습한 내용을 정리한 공간입니다.
줄에 표시할 최대 아이템 개수를 지정하고, 해당 개수보다 많아지면 다음 줄에 표시함.
overflow
파라미터를 이용해 표시할 최대 줄 수를 조절할 수 있음.
modifier
의padding
은margin
처럼 동작한다.contentPadding
은 일반적으로 말하는padding
처럼 동작.RecyclerView
와 유사한 방식으로 동작.items
: 여러 개의 아이템을 index에 따라 표시할 때 사용item
: footer처럼 단독 아이템을 표시할 때 사용stickyHeader
: 스크롤 시 특정 헤더를 상단에 고정할 수 있음. 다른 stickyHeader가 상단에 배치되면 이전 stickyHeader는 더 이상 표시되지 않음. 연락처에서 이름의 초성을 나타낼 때 쓸 수 있음. ex) ㄱ, ㄴ, ㄷ, ...
박스 형식으로 아이템을 쌓는 Layout
LazyVerticalGrid
: 가로로 아이템을 쌓은 후, Grid Layout의 width를 벗어나면 다음 가로 줄에 아이템을 쌓는다.
Tip : LazyVerticalGrid에서 사용되는 item의 width 속성은 일반적으로 무시된다. Modifier를 이용해 width를 설정해도 LazyVerticalGrid의 columns
파라미터로 설정한 크기 적용된다. 이 부분은 Constraint 개념 때문이다.
LazyVerticalStaggeredGrid
: LazyGrid와 달리 각 아이템이 다양한 Height을 가질 수 있다. width 속성이 무시되는 것은 동일하다.
LazyVerticalGrid에서도 각 아이템이 다양한 Height를 가질 수는 있으나, 다음 줄의 각 아이템의 시작점은 이전 줄에서 길이가 가장 긴 아이템보다 아래에 그려진다.
- Scaffold는 content block에 paddingValue를 제공하는데, 이것은 화면이 status bar와 겹치지 않도록 제공되는 padding 값이다.
- topBar, floatingActionButton, snackbarHost, bottomBar를 slot API 형태로 설정할 수 있다.
Compose에서는 View와 달리 hierarchy depth가 문제 되지 않는다. Preview가 없으면 composable이 어떻게 생겼는지 코드만 보고는 예측하기 어려우므로, 가능하면 Box, Column, Row 등을 사용하고 필요한 경우에만 ConstraintLayout을 사용하자.
🔗 WindowSizeClassDemo.kt 🔗 HotelBookingScreen.kt
기기의 화면 크기에 따라 다른 UI를 표시할 때 사용한다.
Width
기준: Compact (~600dp) → Medium (~840dp) → Expanded
Height
기준: Compact (~480dp) → Medium (~900dp) → Expanded
Focus
, AnchoredDraggable
, 그리고 Scroll
을 활용하여 채팅방 답장 기능을 구현한 파일입니다.