-
[안드로이드] DrawerLayout, NavigationView 사용하기안드로이드 2016. 12. 27. 10:53
자세한 NavigationView 사용 예제는 생략합니다.
NavigationView 를 사용해서 toolbar 에 네이게이션 아이콘을 설정해도 나타나지 않아서 생각보다 쉽게 되지 않았습니다.
그 중에서 ActionBarDrawerToggle을 사용했을때 아이콘 설정 및 클릭했을 때 동작을 소개하려고 합니다.
1. 레이아웃 작성
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"
tools:context="com.~~MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white"
app:navigationIcon="@drawable/icon_menu"
/>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
2. 소스 구현
안된 구현 :Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
toolbar.setNavigationIcon(R.drawable.icon_menu);
이렇게만 하고 온갖 옵션 찾아보고 아무리 설정해도 안되어서
stackoverflow 에서 찾아본 결과
아래 bold 된 것처럼 toggle 객체를 setDrawerIndicatorEnabled 를 false 시킨 이후에
toolbar 에 아이콘 설정을 해줘야 되는 것을 알수 있었습니다.
근데, 이렇게만 하면 아이콘을 클릭해도 안되서 다시 toolbar에 클릭 이벤트를 적용해줘야 동작합니다.
private void initNavigationDrawer(Toolbar toolbar) {
final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
toggle.setDrawerIndicatorEnabled(false);
toolbar.setNavigationIcon(R.drawable.icon_menu);
toolbar.setTitle("");
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
drawer.openDrawer(Gravity.LEFT);
}
});
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null);
}
3. 결과
'안드로이드' 카테고리의 다른 글
[안드로이드] 스크롤뷰 안에 recyclerview 사용하기 (0) 2017.03.22 [안드로이드] 탭 이동시 recyclerview 자동 스크롤 막는 법(prevent nested recyclerview from automatically repositioning) (0) 2017.01.11 [안드로이드] 데이터바인딩 onClick (0) 2016.12.22 [안드로이드] 글자 선택 팝업 (0) 2016.12.15 [안드로이드] 이미지뷰 data binding (0) 2016.12.13