내가 자꾸 까먹어서 쓰는 개발 이야기/Android

상태바에 반투명하게 보이는 Navigation Drawer 만들기

FIL. 2015. 4. 17. 18:01
728x90

먼저 네비게이션 드로어를 적용하는 방법은 아래의 두 강좌를 보면 된다.


네비게이션 드로어에 머티리얼 디자인 적용하기 : http://androidhuman.com/559


액티비티 전체를 덮는 네비게이션 드로어 만들기 : http://androidhuman.com/560


여기까지 완료했는데, 드로어 최상단의 이미지가 상태바만큼 잘리고 있었다.


검색을 하루종일 한 결과, 구글에서 제공하는 ScrimInsetsFrameLayout을 Drawer의 rootView로 넣고,


그 안에 기존에 작성 해 두었던 드로어의 xml을 넣어주면 된다.


1. https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/ScrimInsetsFrameLayout.java


의 소스를 Android Studio에 추가한다. package는 물론 변경해준다.


2. 28번 라인 "import com.google.samples.apps.iosched.R;" 을 제거한다.


3. res/values/attr.xml 파일에 아래 내용을 추가한다. (파일이 없다면 새로 만든다.)


<declare-styleable name="ScrimInsetsView">
    <attr name="insetForeground" format="reference|color" />
</declare-styleable>


4. 해당하는 Activity(또는 Fragment)의 onCreate(){}에 다음 내용을 추가한다.

mDrawerLayout.setStatusBarBackgroundColor(
        getResources().getColor(R.color.primary_dark));


5. activity_main.xml의 Navigation Drawer 부분을 <com.example.my.packge.ScrimInsetsFrameLayout></com.example.my.packge.ScrimInsetsFrameLayout>


안으로 이동시킨다.


6. 겁나 잘된다.