직접 메뉴를 커스텀해서 구성해보자!

만들어져 있는 것은 한계가 있으니, 내 맘대로 커스텀하는 방법을 알면 유용할 것이다.

 

 

empty 프로젝트를 하나 만들고, activity_main.xml에서 아래처럼 DrawerLayout으로 변경을 먼저 해준다.

 

 

텍스트뷰를 삭제하고 LinearLayout과 버튼을 삽입해준다. 그러면 메인화면에 버튼이 하나 나타나게 된다.

 

 

그리고 우리는 레이아웃을 하나 더 만들기로 했다. 이름은 activity_drawer로 설정해주었다.

 

 

이 레이아웃으로는 실제 메뉴가 열렸을 때 상황을 생각해서 슬라이드 메뉴를 직접 만들어준다고 생각하면서 만들기로 했다. 

이것도 우선 LinearLayout으로 변경해주었다.

 

 

그 다음 슬라이드를 했을 때 나타날 메뉴의 크기와 색상을 설정해주었다.

 

 

버튼과 텍스트뷰도 만들어주었다. 그런데 하영로이드 메뉴도 안나타나고, LinearLayout에 오류가 뜬다.

 

 

이럴 때는 LinearLayout에 커서를 두고 alt+Enter을 눌러주면 추천 해결방법을 알려준다.

이유는 orientation을 설정하지 않아서였다. orientation을 vertical로 설정해주었더니 하영로이드도 잘 나타나고 오류도 없어졌다.

 

 

그리고 버튼 같은 모양은 꼭 Button이 아니라 LinearLayout을 활용해서도 만들 수 있다. 

test메뉴바를 LinearLayout을 통해 만들어봤다.

아 그리고 center값을 주었는데 글자정렬이 안되어서 자세히 봤더니 linearGravity가 아니라 그냥 gravity 로 설정했어야 했다.

그것도 수정해서 테스트메뉴바를 만들어보았다.

 

 

이번에는 메뉴버튼이 너무 커서 크기를 조절해보았다.

margin을 활용해서 적용했다.

 

 

이번에는 MainActivity.java에 수정을 해주었다.

private 으로 선언해주고, 오류뜬거는 import 해서 해결해주었다.

 

 

그 다음 실제 생명주기, 즉 앱이 실행 될 때 액션들을 설정해주었다.

우선 activity_main.xml에 아이디를 설정해주고,

 

 

LinearLayout이 끝나기 직전에 include를 해준다.

이것의 의미는, include한 activity_drawer은 java파일 같은 곳에서 바로 쓰이는 것이 아니라,  main.xml에서 얘를 연결시킨 것이다.

그래서 프리뷰보면, 파란색으로 인클루드한 것의 형태가 보인다.

 

 

다시 자바로 돌아와서, 아래와 같이 적어주고

 

 

오류는 아이디 설정을 안해줘서 나는 거니까 얼른 해주고 오자.

 

 

자바를 이렇게 마저 작성해주면, 이제 열려라참깨 버튼을 눌렀을 때, 네비게이션 메뉴가 열린다.

 

 

자바 코드를 마저 작성해주자. 오류가 생기는이유는 listener를 아직 정해주지 않아서이다.

 

 

코드는 자동완성으로 이렇게 쉽게 완성이 된다. 이곳에서는 drawer을 슬라이드했을 때, 상태값을 받아오는 곳이다.

슬라이드했을 때, 오픈했을때, 상태했을때, 오픈한거를 닫았을 때 등의 상황에서 원하는 기능을 추가하면 된다.

 

 

마저 코드를 써주었다. 

닫았을 때 행동들을 코드로 정해주었다.

사실 조금 복잡해서 100프로 이해한거는 아니었지만, 코드를 보면 어떤 기능을 수행할지 정도는 보여서 일단 직접 코드를 쳐보고 넘어갔다.

 

 

빌드화면!

버튼을 눌러서 나타나도 되고 옆쪽을 드래그해서 슬라이드해서 열수도 있다.ㅎㅎ

 

 

10강 끝!!

+ Recent posts