[안드로이드] XML 로 메뉴 정의하기

반응형



이어지는 글
메뉴 생성         
컨텍스트 메뉴     
XML로 메뉴 정의하기    ◀ 현재 위치
메뉴의 특성
메뉴 아이템 인텐트


읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥


 XML메뉴에 대한 내용입니다.



XML 로 메뉴 정의하기

메뉴도 UI 레이아웃처럼 XML 로 정의할 수 있습니다.
우선 XML 로 메뉴를 정의하고 적절하 onCreate....() 메소드에서 전개(inflate) 하는 방식입니다. 이것을 하려면 , 우선 프로젝트의 'res/' 디렉토리에 menu 폴더를 만들고 그 디렉토리안에 메뉴를 정의한 XML 파일을 넣으면 되지요.
프로젝트 처음 생성시엔 만들어지지 않으므로 직접 만들어야 합니다.

메뉴 XML 에는 세개의 엘리먼트 <menu> , <group> , <item> 이 잇으며, 루트 노드는 무조건 <menu> 엘리먼트여야 한다는 제약조건을 가집니다. 즉 <item> 과 <group> 엘리먼트는 <menu> 의 자식들이 되어야 하는 것이지요. 또한 <item> 엘리먼트는 <group> 의 자식이 될 수 있고, 또 다른 <menu> 를 자식으로 가질수도 있습니다.

우선 프로젝트 내에서 menu 디렉토리를 만들고 그 아래에 xml 파일을 생성합니다.  생성하게 되면 자동으로 xml 네임스페이스 및 루트엘리먼트인 <menu>를 만들어 두고 있기 때문에 그 하위에 이제 따로 추가만 하면 되지요.


우선 XML 로 메뉴를 정의한 다음, onCreateOptionsMenu() 메소드에서 MenuInflater.inflate() 메소드를 이용하여 리소스를 전개해야 합니다.



이제 소스 코드를 보시죠


< R.menu.메뉴로지정한XML파일명, 인자로 받아온 menu > 가 파라미터가 되는 점에 주의하세요.

getMenuInflater() 메소드는 액티비티의 컨텍스트에 대한 MenuInflater 객체를 리턴합니다.

inflater() 메소드를 호출하며, 그 메소드에 메뉴 리소스와 파라미터로 받은 Menu객체를 전달하면 됩니다.

Start 메뉴와 Exit 메뉴가 잘 추가가 되었네요 ㅎ



추가사항

<group> 엘리먼트로 <item> 엘리먼트를 감싸서 메뉴 그룹을 정의할 수 있고, item 안에 또 다른 <menu> 엘리먼트를 포함시킴으로써 서브메뉴를 생성할 수도 있습니다.

각각의 엘리먼트는 숏컷(단축키), 아이콘, 체크박스, 등의 속성들을 지원합니다.







관련글





반응형

댓글

Designed by JB FACTORY