안규 공부방

Android > ActionBar - 상단에 메뉴 추가하기(Action Bar Menu)

등록일 : 2017-07-05 19:02 조회수 : 93,682


 


이렇게 앱 상단의 액션바에 설정 버튼을 누르면 나오는 메뉴를 만들고자 한다.

굉장히 간단한데, MainActivity에 코드를 몇 줄 추가하면 가능하다.

- 개발 시 사용한 안드로이드 버전은 킷캣으로 안드로이드 버전과 Manifest에서 설정한 테마에 따라 디자인이 다르다.

- MainActivity.java에서 onCreate 하단에 아래의 코드를 추가하면 위와 같이 메뉴가 생성된다.
 
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// 메뉴 추가
		menu.add(0, 0, Menu.NONE, "About");
		menu.add(0, 1, Menu.NONE, "슈앤찡");
		 

		// SubMenu 추가
		SubMenu subMenu = menu.addSubMenu("설정");

		// 메뉴 (0~7중) 1을 누르면 나오는 SubMenu

		subMenu.add(1, 5, Menu.NONE, "하나");
		subMenu.add(1, 6, Menu.NONE, "둘");
		subMenu.add(1, 7, Menu.NONE, "셋");

		menu.add(0, 2, Menu.NONE, "삭제");
		menu.add(0, 3, Menu.NONE, "메일보내기");
		menu.add(0, 4, Menu.NONE, "카메라");
		return true
	}

  
	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		return super.onPrepareOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
			case 0:
				Toast.makeText(MainActivity.this, "About", Toast.LENGTH_SHORT).show();
				break
			case 1:
				Toast.makeText(MainActivity.this, "슈앤찡", Toast.LENGTH_SHORT).show();
				break
			case 2:
				Toast.makeText(MainActivity.this, "삭제", Toast.LENGTH_SHORT).show();
				break
			case 3:
				Toast.makeText(MainActivity.this, "메일보내기", Toast.LENGTH_SHORT).show();
				break
			case 4:
				Toast.makeText(MainActivity.this, "카메라", Toast.LENGTH_SHORT).show();
				break
			case 5:
				Toast.makeText(MainActivity.this, "하나", Toast.LENGTH_SHORT).show();
				break
			case 6:
				Toast.makeText(MainActivity.this, "둘", Toast.LENGTH_SHORT).show();
				break
			case 7:
				Toast.makeText(MainActivity.this, "셋", Toast.LENGTH_SHORT).show();
				break
			default:
				break
			}
	 
		return super.onOptionsItemSelected(item);
	}


중간의 SubMenu는 메뉴를 한번 누르고 2차로 추가되는 메뉴이다


설정을 누르면



위와 같이 SubMenu인 하나, 둘, 셋이 나온다.

코드에서  onOptionsItemSelected  아래의 각 메뉴를 선택했을 경우에 맞게 Case에 코드를 작성하면 된다.

 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.