복잡해 보이지만, 알고보면 간단한 Navigation Drawer Activity의 구조
안드로이드 모바일 앱에서 많이 보이는 Navigation Drawer Activity의 '레이아웃 구조'에 대해 정리 합니다.
뜯어보면 몇가지 레이아웃을 조합해서 만들어 놓은 UI 형태인데,
처음 접할때는 전체 구조가 머리속에 잘 안들어 오더라구요.
Navigation Drawer는 Android 프로젝트 생성시에도 기본으로 제공되는 Activity 타입니다.
Navigation Drawer Activity타입으로 프로젝트를 생성하면
기본으로 네개의 레이아웃을 생성해 주는데요, 각 레이아웃에 대해 간단히 분석해 보겠습니다.
(* app_bar_main.xml에 생성되는 FloatingActionButton은 설명의 편의를 위해 삭제 했습니다.)
[activity_main.xml]
|
<android.support.design.widget.NavigationView |
@drawer_layout ( DrawerLayout )
DrawerLayout은 윈도우의 한 쪽 혹은 양쪽 모서리에서 끌어낼 수있는 '서랍(Drawer)' 형태의 뷰와
인터렉션을 위한 윈도우의 최상위 컨테이너 역할을 하는 레이아웃 입니다. ( ???? )
activity_main.xlm의 전체를 감싸고 있는 레이아웃이 DrawerLayout(@drawer_layout)위젯이며
아래와 같은 코드를 통해 ActionBarDrawerToggle 인스턴스와 결합됩니다.
뿐만 아니라, Navigation View를 열거나 닫기 위해 다음과 같이 사용됩니다.
@nav_view ( Navigation View )
nav_header_main.xml
보통 홈버튼을 누르게 되면 펼쳐지는 Navigation뷰의 Header 부분을 표시하는 레이아웃 입니다.
이 레이아웃은 Navigation View의 header 영역을 표시하는 용도로 사용됩니다.
(* 포함된 ImageView나 TextView등의 위젯은 본 주제에서는 큰 의미가 없으므로 설명은 스킵합니다.)
app_bar_main.xml
<include layout="@layout/content_main" /> |
content_main.xml
Navigation Drawer Layout은 일반적으로 Navigation 메뉴를 선택시 Fragment를 교체하는 형태로 사용되는데,
다름과 같은 코드로 content_frame을 교체하는 방식으로 사용된다.
case R.id.nav_tools {
FragmentTransaction ft = getFragmentManagerInstance().beginTransaction();
Fragment fragment = new ToolFragment();ft.replace(R.id.content_frame, fragment, TOOL_FRAGMENT_TAG);
ft.commit();
break;}
Navigation Drawer ...
영어를 그대로 읽고 쓰다 보니 생각해 본적이 없었는데
직역하면 '탐색 서랍' 인가요???
'안드로이드' 카테고리의 다른 글
RecyclerView #1- 구조 및 기본 사용법 (0) | 2019.03.13 |
---|---|
코드 모음 (0) | 2019.03.08 |
Android resource compilation failed (3) | 2019.02.23 |
Activity간 Object 공유- Parcelable (0) | 2019.02.21 |
EditText 포커스 문제 (0) | 2019.02.13 |