1. activity_main_page.xml
1-1. 전체를 androidx.drawerlayout.widget.DrawerLayout (레이아웃)으로 덮음
1-2. tools:openDrawer="start"
1-3. android:id="@+id/drawer_layout"
2. activity_main_page.xml
2-1. com.google.android.material.navigation.NavigationView
2-2. android:id="@+id/navi_view"
2-3. android:layout_gravity="start"
2-4. 아직 안만들어서 비워둠
app:headerLayout=""
app:menu=""
3. res/layout/menu_header.xml
3-1. RelativeLayout 으로 잡음
4. activity_main_page.xml
4-1. 만든 menu_header.xml을 activity_main_page.xml에 넣음
4-2. app:headerLayout="@layout/menu_header"
5. 싱글메뉴
res/menu/main_menu.xml
리소스파일 생성
전택된 메뉴 색깔주기
Main_Page.java
ImageView menuicon;
// Drawer menu
DrawerLayout drawerLayout;
NavigationView navigationView;
// Drawer Menu Hooks
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.navi_view);
// 선택되어있는상태일대 색깔 들어오게
navigationView.bringToFront();
navigationView.setNavigationItemSelectedListener(this);
2-1. this부분에서
2-2.
NavigationView.OnNavigationItemSelectedListener 이거 긁어서
제일위로 implment넣고 붙이고 알트엔터
2-3.
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return false;
}
이거 생김
2-4.
@Override
protected void onCreate(Bundle savedInstanceState)
여기에
navigationView.setCheckedItem(R.id.nav_home);
이거 또 넣음
8.res/value/color.xml
<!-- Menu Style -->
<style name="naviTheme">
<!-- 메뉴 선택되었을때 -->
<item name="colorPrimary">@color/custom_100</item>
<!-- 메뉴 배경색 -->
<item name="colorControlHighlight">@color/custom_200</item>
</style>
9.테마설정 activity_main_page.xml에서
com.google.android.material.navigation.NavigationView
부분에
android:theme="@style/naviTheme"
적용
메뉴아이콘 클릭
mainpage.java
// menuicon
menuicon = findViewById(R.id.main_top_menu_icon);
navigationDrawer();
알트엔터로 오버라이드
2-1. private void navigationDrawer() 생성됨
2-2.
navigationView.bringToFront();
navigationView.setNavigationItemSelectedListener(this);
navigationView.setCheckedItem(R.id.nav_home);
위에꺼 복붙
2-3
menuicon.setOnClickListener(new View.OnClickListener()
쓰면 오버라이드
2-4
@Override
public void onClick(View view) {
if (drawerLayout.isDrawerVisible(GravityCompat.START))
drawerLayout.closeDrawer(GravityCompat.START);
else drawerLayout.openDrawer(GravityCompat.START);
}
메뉴아이콘 연결 -> 네비게이션 드로우 사용 오버라이드 변수설정(메소드만듦어줌)
-> 불러들임 -> 위에작업 다옮김 (위에있어도 상관없음) -> 메뉴아이콘에서 셋클릭리스너 사용 -> 열려있으면 닫고 닫혀있으면 열어라 (클릭했을때)