본문 바로가기

안드로이드스튜디오

안드로이드 스튜디오 액션바

728x90
반응형
속성 설명
옵션 메뉴 시스템 [메뉴] 버튼을 눌렀을 때 나타나는 메뉴로 각 화면마다 설정할 수 있는 주요 메뉴이다.
컨텍스트 메뉴 화면을 길게 누르면 나타나는 메뉴로 뷰에 설정하여 나타나게 할 수 있다. 텍스트뷰의 편집 상태를 바꾸거나 할 때 사용한다.

* 옵션 메뉴는 액션바(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 타이틀을 표시하도록 한다.

 

반응형