MenuInflator 는 레이아웃 인프레이터와 같이 XML 기반의('\res\menu\' 폴더에 저장 됨)에 메뉴를 기술하고, 자바 프로그램에서 XML 파일을 Inflate 하여 메뉴를 구성하는 방법이다.
XML 문장으로 메뉴를 만든다면, 애플리케이션 로직과 디자인을 분류되므로 간결한 코드를 만들 수 있다. 그리고 간결한 코드는 안드로이드 시스템 성능에 도움을 주게 된다.
이러한 이유로 말미암아 안드로이드는 앞서 설명한 자바 프로그램으로 메뉴를 작성하는 방식보다 XML 문장으로 메뉴를 제작하는 방식을 더욱 권장하고 있다.
http://developer.android.com/guide/topics/resources/menu-resource.html
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@[+][package:]id/resource_name"
android:title="string"
android:titleCondensed="string"
android:icon="@[package:]drawable/drawable_resource_name"
android:onClick="method name"
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
android:actionLayout="@[package:]layout/layout_resource_name"
android:actionViewClass="class name"
android:actionProviderClass="class name"
android:alphabeticShortcut="string"
android:numericShortcut="string"
android:checkable=["true" | "false"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" />
<group android:id="@[+][package:]id/resource name"
android:checkableBehavior=["none" | "all" | "single"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" >
<item />
</group>
<item >
<menu>
<item />
</menu>
</item>
</menu>
- <menu> : 메뉴의 루트요소이다.
- <group> : 아이템을 그룹으로 묶기 위해 사용하는 요소이다. 따라서 하위 <item> 이란 요소를 포함해야 한다.
아래는 <group> 요소에서 사용하는 속성들이다.
- android:id : 자바 프로그램 또는 XML 문서에서 그룹별로 구분하는 아이디를 말한다.
- android:menuCategory : 그룹의 범주 를 지정한다. 사용할수 있는 값은 container, system, secondary, alternative 처럼 사용하는 용도에 따른 범주를 정한다. 범주별로 우선순위가 결정되는데, 그룹별로 나타나는 순서를 '범주를 지정하지 않음 > alternative > secondary > container > system' 으로 결정된다.
- android:orderInCategory - 같은 범주내에서의 0을 포함한 정수로 우선순위를 결정한다. 만약 아이템의 우선순위를 부여하지 않는다면, 아이템들은 선언된 순서대로 표현된다.
- android:checkableBehavior : 그룹내부의 아이템들에게 체크 기능을 부여한다. 유효 값은 아래와 같다.
→ none : 체크 기능을 설정하지 않는다.
→ all : 그룹을 체크하였을 때 동시에 모든 아이템들이 체크하게 된다.
→ single : 라디오버튼 처럼 그룹내에서 한번에 하나의 아이템만 체크된다.
- android:visible : 그룹의 시각적 활성화 여부를 결정한다. 유효값은 true, false 이다.
- android:enabled : 그룹의 활성화 여부를 결정한다. 유효 값은 true, false 이다.
자바 프로그램에서 android.view.Menu 클래스를 사용하여 메뉴 아이템 그룹에 대해 동일한 속성으로 지정할 수 있다.
클래스 메서드 |
XML 속성 |
setGroupCheckable() |
android:checkableBehavior |
setGroupVisibable() |
android:visible |
setGroupEnable() |
android:enabled |
아래는 아이템들의 속성이다.
- android:id 자바 프로그램 또는 XML 문서에서 아이템을 구분하는 아이디이다.
- android:menuCategory : <group> 요소의 menuCategory 속성과 동일하다.
- android:orderInCategory : 같은 범주에서 0를 포함한 정수로 아이템간의 우선순위를 결정한다.
- android:title : 아이템의 이름을 설정한다. 화면에 보여지는 이름이다.
- android:titleCondensed : 일반 타이틀이 너무 길어 화면에 표시할 수 없을 경우 대신 사용되는 간결한 이름이다. 옵션메뉴에서 이 속성이 존재한다면 위의 타이틀 속성을 대신하여 이 속성을 사용ㅎ나다.
- android:icon : 아이템의 아이콘을 설정한다.
- android:alphabeticShortcut : 아이템의 단축키를 영문자로 지정한다. 유효 값은 영문 알파벳 대소문자 구분 없이 한 글자로 인식한다.
- android:numericShortcut : 아이템의 단축키를 숫자로 지정한다. 유효 값은 0~9 까지 정수가 되어야 한다.
- android:checkable : 아이템의 체크가 가능한지 설정한다. 유효 값은 true, false이다.
- android:checked : 메뉴를 화면에 출력할 때 아이템이 체크상태로 표시할 지 지정한다. 유효 값은 true, false 이다.
- android:visible : 메뉴 아이템의 시각적 활성화 여부를 지정한다. 유효 값은 true, false 이다.
- android:enable : 메뉴 아이템의 활성화 여부를 지정한다. 유효 값은 true, false 이다.
[Android]스레드 구현 (0) | 2013.09.18 |
---|---|
[Android]사용자가 만든 토스트 (0) | 2013.09.15 |
[Android]액티비티와 태스크 (0) | 2013.09.09 |
[Android] 인텐트 - 03 (0) | 2013.08.01 |
[Android] 인텐트 - 02 (0) | 2013.07.31 |
댓글 영역