구글의 머티리얼 디자인은 모바일과 데스크톱, 그리고 그 밖에 다양한 장치를 아우르는 일관된 애플리케이션 디자인 지침이다. 예를 들어 그림자 효과를 주어 사용자가 화면의 계층을 쉽게 파악하게 하거나 버튼을 터치했을 때 물결 모양의 효과를 주어 어느 부분을 터치했는지 직관적으로 알 수 있게 한다. 이러한 머티리얼 디자인 지침에 맞게 앱을 개발하려면 다양한 뷰가 필요한데, 구글은 이를 지원하려고 머티리얼 라이브러리를 제공한다.
앱바란 화면 위쪽의 꾸밀 수 있는 영역을 의미한다. 앱바를 이용해 메뉴를 출력하는 툴바를 포함할 수 있으며 이외에 이미지나 문자열을 함께 출력하는 등 앱바를 이용해 화면의 위쪽 영역을 다양하게 꾸밀 수 있다.
코디네이터 레이아웃은 뷰끼리 상호작용해야 할 때 사용한다. 예를 들어 하나의 뷰가 스크롤 될 때 그 정보를 다른 뷰에서도 받아 함께 스크롤 하고 싶다면 코디네이터 레이아웃이 정보를 받아 다른 뷰에 전달해준다. 하지만 코디네이터 레이아웃에 뷰를 차가만 한다고 모든 뷰의 스크롤 정보를 공유할 수 있는 것은 아니다. 서로 상호작용하기 위해선 비헤이비어라는 것을 구현해야 뷰끼리 상호작용 할 수 있다.
컬랩싱 툴바 레이아웃은 앱바 레이아웃 하위에 선언하여 앱바가 접힐 때 다양한 설정을 할 수 있는 뷰이다. 예를 들어 앱바가 접힐 때 표시할 제목이나 색상등을 지정할 수 있다.
컬랩싱 툴바 레이아웃에서 앱바가 스크롤될지 설정하는 layout_scrollFlags가 있는데 스크롤 되어야 한다면 scroll값을 지정하고 |연산자를 추가해 스크롤 시 어떻게 움직여야 하는지를 설정한다.
탭 레이아웃은 탭으로 구분하는 화면에서 탭 버튼을 배치하는 레이아웃이다. 탭 화면에서는 탭 버튼을 선택했을 때 나와야 하는 내용이 있다.
tabGravity는 탭 버튼을 정렬하는 속성으로 기본값은 fill이며 탭 버튼을 가로로 등분하여 배치한다. center는 탭 버튼을 가운데 정렬한다.
tabMode 속성은 탭 버튼을 스크롤 할 수 있는지 설정하는것으로 기본값은 fixed인데 스크롤 지원이 불가하며 scrollable로 설정하면 탭 버튼이 왼쪽부터 나열되고 모두 출력할 수 없다면 자동으로 가로 스크롤이 생긴다.
내비게이션 뷰는 드로어 레이아웃으로 열린 화면에 출력되는 내용을 구성할 때 사용하는데, 보통은 메뉴 항목을 나열하는 형태로 구성한다. 내비게이션 뷰로 화면을 구성하려면 위쪽에 적용할 레이아웃 XML파일과 아래쪽에 적용할 메뉴 XML파일을 만들어 NavigationView의 속성으로 XML파일을 알려 주기만 하면 된다.
확장된 플로팅 액션 버튼은 화면에 떠 있는 듯한 버튼을 제공하는 뷰이다.