[예제] Option Menu (옵션메뉴)

옵션 메뉴란 기기의 menu 버튼을 눌렀을때 표시되는 메뉴를 말한다.
현재 버전(2.3)에서는 총 6개까지는 정상적으로 보이고 7개부터는 more 버튼이 생겨서 확장 메뉴에서 표시된다.

메뉴를 보이게 하기 위해서는 onCreateOptionsMenu() 콜백 메소드를 재정의 해야 한다.(기기의 menu 버튼을 누르면 저 메소드가 호출 된다.)
Activity 에는 아래와 같이 구현되어 있다.

public boolean onCreateOptionsMenu(Menu menu) { throw new RuntimeException("Stub!"); } 


RuntimeException을 throw 하게 되어 있는데, 재정의 할때 super.onCreateOptionsMenu(menu) 이렇게 하여도 RuntimeException 이라서 그런지 별 문제는 없어 보이지만 저 구문은 생락하자.
( 많은 예제에서는 super.onCreateOptionsMenu(menu); 구문을 생략하고 있다. 대세를 따르자.)


이제 메뉴를 추가해 보자.

private final int MENU_1 = 1;
private final int MENU_2 = 2;
private final int MENU_3 = 3;
private final int MENU_4 = 4;
private final int MENU_5 = 5;
private final int MENU_6 = 6;
private final int MENU_7 = 7;

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
//super.onCreateOptionsMenu(menu);
menu.add(0, this.MENU_1, 1, "New Game");
menu.add(0, this.MENU_2, 0, "Quit").setIcon(R.drawable.favorites);
menu.add(0, this.MENU_3,0,"big").setIcon(R.drawable.database);
menu.add(0, this.MENU_4, 0, "small").setIcon(R.drawable.database_small);
menu.add(0, this.MENU_5, 0, "Quit");
menu.add(0, this.MENU_6, 0, "Quit");
menu.add(0, this.MENU_7, 0, "Quit");
return true;
}
/* Handles item selections */
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case MENU_1:
Toast.makeText(TeamScheduleActivity.this, "MENU_1", Toast.LENGTH_SHORT).show();
return true;
case MENU_2:
Toast.makeText(TeamScheduleActivity.this, "MENU_2", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
메뉴 추가
메뉴를 추가하기 위해서는 파라미터로 넘어온 menu 객체에 add 메소드로 추가하는것을 볼 수 있다.
추가시 매개변수는 groupId, itemId, order, title 순으로 받는다.
메뉴에 아이콘 추가
아이콘의 추가는 setIcon(int) 메소드를 이용하여 표시할 수 있다. 단 아이콘 크기에 주의해야 한다. 아이콘 크기가 커버리면 title을 가리게 된다.

 
메뉴 선택 처리
우선 위의 소스를 보면 재정의한 또 다른 메소드가 보인다.

public boolean onOptionsItemSelected(final MenuItem item)

이 메소드는 사용자가 메뉴를 선택했을때 호출되는 콜백 메소드이다.
메뉴에 대한 선택 처리는 여기에서 이루어 진다.



 

'안드로이드' 카테고리의 다른 글

Android platform Versions  (0) 2011.11.10
[예제] Context Menu (컨텍스트 메뉴)  (0) 2011.09.07
안드로이드 시작하기~  (0) 2010.03.19