속성 | 설명 |
옵션 메뉴 | 시스템 [메뉴] 버튼을 눌렀을 때 나타나는 메뉴로 각 화면마다 설정할 수 있는 주요 메뉴이다. |
컨텍스트 메뉴 | 화면을 길게 누르면 나타나는 메뉴로 뷰에 설정하여 나타나게 할 수 있다. 텍스트뷰의 편집 상태를 바꾸거나 할 때 사용한다. |
* 옵션 메뉴는 액션바(Action Bar)에 포함되어 보이도록 만들어져 있다.
액션바는 앱의 제목이 보이는 위쪽 부분을 말한다.
옵션 메뉴와 컨텍스트 메뉴는 각각의 애기비티마다 설정할 수 있다.
//[Reference]
public boolean onCreateOptionsMenu(Menu menu)
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
즉, 두 메서드를 다시 정의하기만 하면 매우 쉽게 메뉴를 추가할 수 있다.
* 메뉴를 추가할 수 있는 대표적인 메서드들
//[Reference]
MenuItem add(int groupId, int itemId, int order, CharSequence title)
MenuItem add(int groupId, int itemId, int order, int titleRes)
SubMenu addSubMenu(int titleRes)
* groupId 값은 아이템을 하나의 그룹으로 묶을 때 사용한다.
* itemId는 아이템이 갖는 고유 ID 값으로, 아이템이 선택되었을 때 각각의 아이템을을 구분할 때 사용할 수 있다.
* 아이템이 많아서 서브 메뉴로 추가하고 싶을 때는 addSubMenu 메서드를 사용한다.
그런데 이렇게 코드를 메뉴에 추가하는 것 보다는 XML에서 메뉴의 속성을 정의한 후 객체로 로딩하여 참조하는 것이 더 간단하다.
* 메뉴를 사용하는 화면은 다양하게 있을 수 있지만 앱의 설정이나 도움말 등의 항목을 메뉴로 만들어 추가하는 경우가 많다.
컨텍스트 메뉴는 어떤 뷰에 필요한 기능만을 모아 정의해 놓은 것으로 손가락으로 길게 눌렀을 때 보이게 된다.
옵션 메뉴를 액티비티에 등록하고 사용자가 옵션 메뉴를 선택했을 때 처리하기 위해 두 개의 메서드를 다시 정의한 것처럼 컨텍스트 메뉴도 두 개의 메서드를 다시 정의하면 사용 할 수 있다.
컨텍스트 메뉴를 특정 뷰에 등록하고 싶을 때는 registerForContextMenu 메소드를 사용한다.
//[Reference]
void Activity.registerForContextMenu(View view)
* 이 메서드로 컨텍스트 메뉴를 등록하면 각각의 메뉴 아이템을 선택했을 때 onContextItemSelected 메서드가 호출되므로 이 메서드의 파라미터로 전달하는 MenuItem 객체를 사용해 선택된 메뉴 아이템의 정보를 확인한 후 처리할 수 있다.
사용 방법이 옵션 메뉴와 거의 유사하므로 필요할 때 뷰에 기능을 붙여 사용하면 된다.
* 액션바는 기본적으로 제목을 보여주는 타이틀의 기능을 하므로 앱의 제목을 보여줄 수 있으며 화면에 보이거나 보이지 않도록 만들 수도 있다. 소스 코드에서 액션바를 보이게 만들고 싶다면 show 메서드를 호출하고 감추고 싶다면 hide 메서드를 호출한다.
//[Reference]
ActionBar abar = getActionBar();
abar.show();
abar.hide();
* setSubtitle 메서드를 사용하면 타이틀의 부제목을 달아줄 수도 있다.
부제목은 화면에 대한 구체적인 설명을 같이 보여주고 싶을 때 유용하게 사용할 수 있다.
앱을 디포틀 설정 그대로 실행하면 액션바의 왼쪽에는 아무것도 보이지 않지만 설정을 바꾸면 아이콘을 보이게 만들 수도 있다.
* 액션바의 디스플레이 옵션으로 설정할 수 있는 상수들
디스플레이 옵션 상수 | 설명 |
DISPLAY_USE_LOGO | 홈 아이콘 부분에 로고 아이콘을 사용한다. |
DISPLAY_SHOW_HOME | 홈 아이콘을 표시하도록 한다. |
DISPLAY_HOME_AS_UP | 홈 아이콘에 뒤로가기 모양이 < 아이콘을 같이 표시한다. |
DISPLAY_SHOW_TITLE | 타이틀을 표시하도록 한다. |
'IT > 안드로이드스튜디오' 카테고리의 다른 글
안드로이드 스튜디오 뷰페이저 만들기 (0) | 2022.07.12 |
---|---|
안드로이드 스튜디오 상단 탭과 하단 탭 만들기 (0) | 2022.07.12 |
안드로이드 스튜디오 프래그먼트 (0) | 2022.07.11 |
안드로이드 스튜디오 프래그먼트 생명주기 (0) | 2022.07.11 |
안드로이드 스튜디오 프래그먼트 개념정리 (0) | 2022.07.08 |