Mobile/Android(Java)

[Android/java] Options Menu 만들기

개발왕 금골드 2020. 3. 4. 20:47
반응형

안녕하세요 골드입니다.

오늘은 안드로이드에서 많이 사용하는 App Bar 메뉴에 대해서 간단하게 글을 써보도록 하겠습니다.

 

 

Appbar 메뉴는 오른쪽에 보이는 new버튼과 ... 버튼입니다.

다양한 메뉴를 Appbar 위에 놓을 수 있고,

메뉴가 너무 많으면 점점점 버튼에 넣어놓고 눌렀을 경우 팝업으로 보여줄 수 있습니다.

 

시작하기 전에 해야할 일이 있습니다.

먼저 AndroidManifest.xml에서 <application> 태그 안에

theme를 NoActionBar로 설정해주기 바랍니다.

 

 

 

1. activity_main xml 파일

액션바를 지웠습니다.

그 자리에 새로운 툴바를 만들기 위해 툴바를 생성합니다.

 

 

툴바를 사용할땐 빨란 에러가 생길 수 있습니다.

수직 방향에 대한 속성을 설정해달라는 말인데요,

저는 그래서 LinearLayout을 선언했습니다.

 

 

2. Menu.xml 파일 만들기

 메뉴에 대한 xml을 새로 만들어 줘야합니다.

res/menu 폴더에 xml파일을 추가해야 하기 때문에

먼저 menu 폴더를 만들겠습니다.

이 폴더 안에 xml파일을 만들겠습니다.

저는 이름을 memo_menu라고 짓겠습니다.

 

 

menu.xml 을 만들었다면 최상위 레이아웃은 반드시 <menu>여야 합니다.

<menu> 안에 View는 두 가지가 올 수 있습니다.

 

<item>은 메뉴 아이템을 나타내기 위한 View입니다.

<group>이라는 View가 올 수 있는데 <group>은 <item>들을 그루핑하고 속성을 공유할 수 있도록 도와줍니다.

 

app:showAsAction라는 속성으로 AppBar에 내놓을지 점점점 안에 숨길지를 정할 수 있습니다.

alwaysnever는 무조건 꺼내고 숨기고 속성이고,

ifRoom이라는 속성은 만약 Appbar에 자리가 있으면 보여주는 속성입니다.

 

icon파일이 없을 경우

drawable 폴더에서

New -> Image Asset에서 icon을 만들 수 있습니다.

Asset Type을 clip Art로 바꾼다면

구글에서 기본으로 제공하는 icon을 사용할 수 있습니다.

 

3.MainActivity.class 파일 작성

 

 

Toolbar를 참조해주고 ActionBar를 Toolbar로 지정해줍니다.

(Toolbar는 androidX Toolbar입니다.)

앱이 죽는다면 Manifest에서 noActionBar를 지정하지 않았을 가능성이 높습니다.

 

onCreateOptionsMenu를 오버라이드해서

방금 만든 memo_menu.xml 파일을 inflate해주면 되겠습니다.

 

플레이 해보면

 

 

제 눈에는 디자인도 좋아 보입니다. 

이렇게 메뉴를 만들었습니다.

 

이제 각 메뉴 버튼을 눌렀을 경우를 만들겠습니다.

 

 

이번에는 onOptionsItemSelected를 오버라이드합니다.

 

이런 경우는 switch문을 사용하는게 보기 좋습니다. 

생성한 menu.xml의 item들을 참조하고 각 case에 원하는 작업을 작성합니다.

default문에서 super클래스를 참조합니다.

 

여기까지 골드였습니다.

감사합니다.

 

참고자료 : https://developer.android.com/guide/topics/ui/menus?hl=ko#java

메뉴  |  Android 개발자  |  Android Developers

메뉴는 수많은 유형의 애플리케이션에서 사용되는 보편적인 사용자 인터페이스 구성 요소입니다. 친숙하고 일관적인 사용자 경험을 제공하기 위해 Menu API를 사용하여 액티비티에서 사용자 작업과 다른 옵션을 나타내야 합니다. Android 3.0(API 레벨 11)부터 Android로 구동하는 기기는 전용 Menu 버튼을 제공하지 않아도 됩니다. 이번 변경사항이 적용된 이후에 Android 앱은 종래의 6개 항목으로 구성된 메뉴 패널에 의존하는 방식에서 벗어

developer.android.com

https://developer.android.com/training/appbar/actions?hl=ko

작업 추가 및 처리  |  Android 개발자  |  Android Developers

앱바에서 사용자 작업의 버튼을 추가할 수 있습니다. 이 기능을 활용하면 현재 컨텍스트에 가장 중요한 작업을 앱 상단에 바로 배치할 수 있습니다. 예를 들어 사진 탐색 앱의 경우 사용자가 사진 롤을 볼 때 상단에 공유 및 앨범 만들기 버튼이 표시되고 사용자가 개별 사진을 볼 때 자르기 및 필터 버튼이 표시될 수 있습니다. 앱바의 공간은 한정되어 있습니다. 앱이 선언한 작업이 앱바에 들어갈 수 있는 것보다 더 많은 경우 앱바는 초과 작업을 더보기 메뉴에 보냅

developer.android.com

 

반응형