상세 컨텐츠

본문 제목

[Android]Menu 인플레이터

Android 개발

by mobile 2013. 9. 15. 00:19

본문

반응형

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 개발' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역