네비게이션 드로어(Navigation Drawer) 사용법
개요
네비게이션 드로어는 앱의 주요 메뉴 항목이 들어있는 사이드 패널이다. 사용자가 왼쪽에서 오른쪽으로 스와이프하여 나타날 수 있고, 메뉴 항목을 탭하여 해당하는 화면으로 이동할 수 있다.
설정하기
네비게이션 드로어를 사용할 액티비티의 레이아웃 파일에 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);
}
- 드로어 메뉴 항목을 구성한다.
<com.google.android.material.navigation.NavigationView ... app:headerLayout="@layout/header" app:menu="@menu/drawer_menu" />
- headerLayout: 드로어의 헤더 영역에 표시될 레이아웃 파일을 지정한다.
- menu: 드로어에 표시될 메뉴 항목을 정의한 메뉴 리소스 파일을 지정한다.
네비게이션 드로어 사용하기
드로어 메뉴 항목 선택 처리를 위해
NavigationView.OnNavigationItemSelectedListener
리스너를 구현한다.NavigationView navigationView = findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { // 선택한 메뉴 항목에 따라 처리할 내용 return false; } });
드로어를 열기 위해 툴바에 메뉴 버튼을 추가한다.
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);
}
마무리
네비게이션 드로어를 사용하면 사용자가 주요 메뉴에 빠르게 접근할 수 있는 편리한 기능을 제공할 수 있다. 드로어 메뉴 항목을 구성하고, 항목을 선택했을 때의 처리를 구현하여 앱의 사용성을 크게 향상시킬 수 있다.
댓글