상세 컨텐츠

본문 제목

[안드로이드] DrawerLayout Navigation 호출하는 메뉴버튼 생성하기

안드로이드

by aries574 2021. 1. 21. 12:22

본문



이번 시간에는 이전에 했던 예제를 이어서  AppBar에 메뉴아이콘을 추가해서 

Navigation을 호출하는 예제를 만들어 보겠습니다.


1. 아이콘 추가

ic_menu.xml


2. 메인코드 수정(MainActivity.java)


2-1. ActionBar 객체 추가해서 뒤로가기 버튼 생성하고, 뒤로가기 버튼에 메뉴 아이콘 적용

// 액션바 객체
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);

//뒤로가기버튼 이미지 적용
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);


2-2. 메뉴 아이콘 클릭 시 네비게이션 메뉴 호출 설정

//메뉴 선택시 네비게이션 호출
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {

switch(item.getItemId()){
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
return true;
}

return super.onOptionsItemSelected(item);
}


2-3. 전체코드


import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;
import com.google.android.material.navigation.NavigationView;

public class MainActivity extends AppCompatActivity {

private Toolbar toolbar;

private DrawerLayout drawerLayout;

private NavigationView navigationView;

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

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


// 액션바 객체
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);

//뒤로가기버튼 이미지 적용
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);


drawerLayout = findViewById(R.id.drawer_layout);

navigationView = findViewById(R.id.navigationView);

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

switch(menuItem.getItemId()){
case R.id.nav_camera:
menuItem.setChecked(true);
displayMessage("camera selected");
drawerLayout.closeDrawers();
return true;

case R.id.nav_photo:
menuItem.setChecked(true);
displayMessage("photo selected");
drawerLayout.closeDrawers();
return true;

case R.id.nav_slideShow:
menuItem.setChecked(true);
displayMessage("slideShow selected");
drawerLayout.closeDrawers();
return true;
}

return false;
}
});
}

private void displayMessage(String message){
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}

//메뉴 선택시 네비게이션 호출
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {

switch(item.getItemId()){
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
return true;
}

return super.onOptionsItemSelected(item);
}
}


3. 실행화면










반응형

관련글 더보기

댓글 영역