< 개발 환경 > < 프로젝트 적용 > (2가지 버전으로 작업) |
안드로이드/Android 옵션메뉴(OptionMenu) SubMenu 활용 하기~!
안드로이드 옵션메뉴(OptionMenu)에서 SubMenu를 활용 하는 방법 입니다. SubMenu란 옵션메뉴에서 하나의 Menu item을 그 하위의 sub item들과 묶어서 하나의 Group 형태로 활용하는 방법 입니다. SubMenu를 설정하고 SubMenu가 선택이 되었을 때는 안드로이드 ContextMenu와 동일한 형태의 팝업창을 보여 줍니다.
Menu
Menu
Menu
SubMenu
-> Menu
-> Menu
-> Menu
Menu
의 형태로 보시면 됩니다. 자 그럼 구현 방법에 대해 알아 보겠습니다. 일단 예제에는 Java 코드로 동적으로 생성하는 방법이 나와 있는데 XML 형태로 구현을 원한다면 아래 예제의 Java 코드의 Menu.add() 부분을 주석처리 하고,
// getMenuInflater().inflate(R.menu.activity_main, menu);
주석을 풀고 사용 하시면 됩니다.
package arabiannight.tistory.com.optionmenusubmenu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.widget.Toast; public class MainActivity extends Activity { final int ONE = 0; final int TWO = 1; final int THREE = 2; final int FOUR = 3; final int FIVE = 4; final int SIX = 5; final int SEVEN = 6; final int EIGHT = 7; final int NINE = 8; final int TEN = 9; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // XML로 옵션메뉴 추가 하기 // getMenuInflater().inflate(R.menu.activity_main, menu); // Java Code로 옵션메뉴 추가 하기 menu.add(0, ONE, Menu.NONE, "ONE").setIcon(android.R.drawable.ic_menu_rotate); menu.add(0, TWO, Menu.NONE, "TWO").setIcon(android.R.drawable.ic_menu_add); menu.add(0, THREE, Menu.NONE, "THREE").setIcon(android.R.drawable.ic_menu_agenda); menu.add(0, FOUR, Menu.NONE, "FOUR"); menu.add(0, FIVE, Menu.NONE, "FIVE"); // Menu에 SubMenu 추가 SubMenu subMenu = menu.addSubMenu("글씨체 설정"); subMenu.add(1, SIX, Menu.NONE, "굴림체"); subMenu.add(1, SEVEN, Menu.NONE, "이탤릭체"); subMenu.add(1, EIGHT, Menu.NONE, "맑은고딕"); return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case ONE: Toast.makeText(MainActivity.this, "ONE", Toast.LENGTH_SHORT).show(); break; case TWO: Toast.makeText(MainActivity.this, "TWO", Toast.LENGTH_SHORT).show(); break; case EIGHT: Toast.makeText(MainActivity.this, "EIGHT", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); } }
XML의 메뉴 구조 모습 입니다.
파일첨부 :
(프로요 SDK 2.2 버전) : TestOptionMenuSubMenu.zip
(아이스크림 샌드위치 SDK 4.0 버전) : TestOptionMenuSubMenuICS.zip
두가지 스크린샷 모두 소스는 동일 합니다. 다만 아이스크림 샌드위치(4.0) 버전 부터 옵션메뉴 자체가 바꼈네요. 개인적으로는 더 세련되 진 것 같습니다. 하지만 Menu.add().setIcon()등 기존에 지원되던 기능들이 안되는게 있다는게 좀 아쉽네요^^;
만약 아이스크림 샌드위치(4.0) 버전 에서 기존 버전의 옵션메뉴를 사용하고 싶다면 OptionMenu 자체를 커스텀해서 사용 하셔야 합니다.
스크린샷 (프로요 SDK 2.2 버전) :
스크린샷 (아이스크림 샌드위치 SDK 4.0 버전) :
감사합니다.
'Android > 메뉴(Menu)' 카테고리의 다른 글
안드로이드/Android 컨텍스트메뉴(ContextMenu) 포지션(Position) 얻어 오기 ~! (0) | 2013.02.21 |
---|---|
안드로이드/Android 컨텍스트메뉴(ContextMenu) 사용 예제 ~! (0) | 2013.01.17 |
안드로이드/Android 옵션메뉴(OptionMenu) 사용 예제 ~! (0) | 2013.01.16 |
안드로이드/Android 옵션메뉴(OptionMenu) 사용방법 ~! (2) | 2013.01.15 |