차근차근/Android

actionbar submenu

예쁜꽃이피었으면 2015. 2. 3. 15:06


검색어 : actionbar submenu style



안드로이드/Android 옵션메뉴(OptionMenu) SubMenu 활용 하기~!

http://arabiannight.tistory.com/entry/311 

 - > 쉬운방법 

안드로이드/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);

주석을 풀고 사용 하시면 됩니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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의 메뉴 구조 모습 입니다.








Android ActionProvider를 이용한 ActionBar Item Action에 대한 커스텀뷰 생성


http://www.kmshack.kr/android-actionprovider%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%95%A1%EC%85%98%EB%B0%94-%EC%95%84%EC%9D%B4%ED%85%9C-%EC%95%A1%EC%85%98%EC%97%90-%EB%8C%80%ED%95%9C-%EC%BB%A4%EC%8A%A4%ED%85%80%EB%B7%B0/

반응형