[Android] CoordinatorLayout, NestedScrollView

Doodung·2021년 8월 27일
0

Android

목록 보기
3/9
post-thumbnail

CoordinatorLayout

NestedScrollView 또는 RecyclerView 와 같이 Nested Scrolling을 지원하는
내부 레이아웃을 사용할 때 NestedScrollView CoordinatorLayout 을 사용하여 
Material Design Scrolling Effects 를 얻을 수 있다.

  • FrameLayout 같이 좌표를 자유롭게 지정 가능하다.
  • android sdk 24.1.0(Nougat)에 포함되었다.
  • 만약 compile sdk 가 24.1.0 이전 버전이라면 gradle에 dependency 추가해줘야한다.
  • 한개의 parent 아래 포함된 여러개의 child view 를 behavior 라는 것을 이용해서 다양한 애니메이션 효과를 표현해 낼 수 있다.

AppbarLayout 아래 자식들은 setScrollFlags(int) 메소드나 xml 속성으로 app:layout_scrollFlags을 적용하면 scroll에 대한 행동(behavior)을 설정할 수 있다.

단, 주의할 점은 AppBarLayout는 CoordinatorLayout의 바로 아래 자식이어야 한다.
만약 다른 ViewGroup 안에서 AppBarLayout을 사용한다면 해당 기능은 동작하지 않을 것.

AppBarLayout이 스크롤을 인식하기 위해서는 CoordinatorLayout 안에 같은 수준으로 선언된 형제 뷰(sibling)가 RecyclerView나 NestedScrollView처럼 스크롤 가능한 뷰여야 한다.

  1. value/styles.xml
    -> apptheme noactionbar로 설정

  2. 해당 activity에서
    // ToolBar를 ActionBar로 설정
    setSupportActionBar(app_toolbar)


ToolBar의 app:layout_scrollFlags
scrollFlags는 아래와 같은 동작을 설정할 수 있다.


동작 과정

  • 상단바가 스크롤 시 사라지는 것을 볼 수 있다.

xml 코드


NestedScrollView

안드로이드 개발을하다 보면 ScrollView 안에 RecyclerView를 넣어야하는 경우가 생긴다. 
이럴 때, NestedScrollView를 사용하면 된다. 이름처럼 중첩 된 스크롤 뷰라는 뜻이다. 

사용하는 상황은 다음과 같다.

  • RecyclerView가 있는데 다른 형태의 뷰가 보여 질 때
  • 타이틀이 있고 아래에 리스트 목록이 보일 때

CoordinatorLayout와 NestedScrollView

동작 과정

xml과 화면 구성

profile
반가워요!

0개의 댓글