본문 바로가기
카테고리 없음

네비게이션 드로어(Navigation Drawer) 사용법

by kangs' tong 2023. 10. 20.

네비게이션 드로어(Navigation Drawer) 사용법

개요

네비게이션 드로어는 앱의 주요 메뉴 항목이 들어있는 사이드 패널이다. 사용자가 왼쪽에서 오른쪽으로 스와이프하여 나타날 수 있고, 메뉴 항목을 탭하여 해당하는 화면으로 이동할 수 있다.

설정하기

  1. 네비게이션 드로어를 사용할 액티비티의 레이아웃 파일에 DrawerLayout을 추가해준다.

    <androidx.drawerlayout.widget.DrawerLayout
     android:id="@+id/drawer_layout"
     ...
     >
    
     <!-- 메인 컨텐츠 -->
     <FrameLayout
         android:id="@+id/main_content"
         ...
         >
    
         <!-- 메인 컨텐츠의 내용 -->
    
     </FrameLayout>
    
     <!-- 네비게이션 드로어 -->
     <com.google.android.material.navigation.NavigationView
         android:id="@+id/nav_view"
         ...
         >
    
         <!-- 드로어 메뉴 항목 -->
    
     </com.google.android.material.navigation.NavigationView>
    

</androidx.drawerlayout.widget.DrawerLayout>


2. 네비게이션 드로어 핸들러를 설정한다.
```java
private ActionBarDrawerToggle mActionBarDrawerToggle;
private DrawerLayout mDrawerLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mDrawerLayout = findViewById(R.id.drawer_layout);

    mActionBarDrawerToggle = new ActionBarDrawerToggle(
            this,
            mDrawerLayout,
            R.string.open_drawer,
            R.string.close_drawer
    ) {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            // 드로어가 열릴 때 실행할 내용
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            // 드로어가 닫힐 때 실행할 내용
        }
    };

    mDrawerLayout.addDrawerListener(mActionBarDrawerToggle);

    ...
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mActionBarDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mActionBarDrawerToggle.onConfigurationChanged(newConfig);
}
  1. 드로어 메뉴 항목을 구성한다.
    <com.google.android.material.navigation.NavigationView
     ...
     app:headerLayout="@layout/header"
     app:menu="@menu/drawer_menu"
     />
  • headerLayout: 드로어의 헤더 영역에 표시될 레이아웃 파일을 지정한다.
  • menu: 드로어에 표시될 메뉴 항목을 정의한 메뉴 리소스 파일을 지정한다.

네비게이션 드로어 사용하기

  1. 드로어 메뉴 항목 선택 처리를 위해 NavigationView.OnNavigationItemSelectedListener 리스너를 구현한다.

    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
     @Override
     public boolean onNavigationItemSelected(@NonNull MenuItem item) {
         // 선택한 메뉴 항목에 따라 처리할 내용
         return false;
     }
    });
  2. 드로어를 열기 위해 툴바에 메뉴 버튼을 추가한다.

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    

ActionBar actionBar = getSupportActionBar();

if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
}


3. 메뉴 버튼 클릭 시 드로어를 열고 닫도록 처리한다.
```java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mActionBarDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

마무리

네비게이션 드로어를 사용하면 사용자가 주요 메뉴에 빠르게 접근할 수 있는 편리한 기능을 제공할 수 있다. 드로어 메뉴 항목을 구성하고, 항목을 선택했을 때의 처리를 구현하여 앱의 사용성을 크게 향상시킬 수 있다.

댓글