안드로이드는 View 를 Long-Touch 할 경우 Context Menu 를 보여지게 할 수 있다. Context Menu 는 크게 두 부분으로 나뉘는데 메뉴의 타이틀을 나타내는 헤더 부분과 사용자가 선택할 수 있는 메뉴 부분으로 나뉜다.

메뉴 위쪽의 헤더 부분은 생략할 수 있고 필요에 따라 Custom View 로 대체할 수 있다. Context Menu 를 간단하게 분리해 보면 헤더의 유무와 헤더의 종류에 따라 분리할 수 있다. 아래는 각각의 경우에 따른 구현 내용이다.

공통으로 사용되는 Botton 의 Context Menu 리소스


메뉴 Header가 없는 Context Menu

메뉴 리소스로 부터 메뉴를 읽어들이기만 하면 위와 같은 심플한 Context Menu 가 출력이 된다.


시스템에서 지원하는 Header를 갖은 Context Menu
Context Menu 생성시 Context Menu 개체의 Header 에 setHeaderIcon 과 setHeaderTitle 함수를 이용하여 아이콘과 타이틀을 지정하면 위와 같이 시스템에서 지원하는 Header가 출력 된다.


Custom View 를 Header로 갖는 Context Menu
메뉴 헤더 부분에 원하는 View를 올릴 수 있는데 이는 Context Menu 개체의 setHeaderView( View v ) 함수를 이용하면 된다. 뷰를 올리게 되면 setHeaderIcon 과 setHeaderTitle 함수가 지정되더라도 이를 무시하고 사용자가 지정한 View 를 메뉴의 헤더로 대체한다.

헤더에 사용된 View Layout 리소스 xml 파일 내용 (context_view_for_button.xml)

메뉴 헤더에 View 를 올리는 코드


Posted by NeoDreamer
:
BLOG main image
사람의 발목을 잡는건 '절망'이 아니라 '체념'이고 앞으로 나아가게 하는건 '희망'이 아니라 '의지'다. - 암스 중에서 - by NeoDreamer

공지사항

카테고리

전체보기 (793)
Life Story (1)
Thinking (2)
Nothing (5)
---------------* (0)
Dev Story (701)
Com. Story (80)
IT Story (1)
---------------+ (0)
Etc (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :
05-10 00:00