코틀린으로 작성한 안드로이드 drawer layout 사용하기

오늘은 코틀린으로 안드로이드에서 drawer layout을 사용하여 엑티비티에 코드를 작성해보려 합니다.

레이아웃

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="8dp"
    android:layout_marginStart="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent">

        <android.support.constraint.ConstraintLayout
            android:id="@+id/constraintLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="3dp">
        </android.support.constraint.ConstraintLayout>

        <android.support.constraint.ConstraintLayout
            android:layout_width="400dp"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            android:background="#009688"
            android:gravity="center">
        </android.support.constraint.ConstraintLayout>

</android.support.v4.widget.DrawerLayout>

DrawerLayout이 덮는 화면과 옆에서 나올 DrawerLayout 화면을 감싸줍니다.

DrawerLayout이 덮는 화면은 레이아웃의 화면을 wrap_content로 맞춰주고, 나올 화면은 높이만 match_parent로 맞추고 넓이는 덮는 화면의 크기를 결정하므로 원하는 대로 설정해줍니다.

위 예시는 ConstraintLayout을 사용했지만, 다른 레이아웃을 사용해도 됩니다.

만약 터치로 인해 drawer layout이 덮히는 화면의 이벤트가 작동하게되면 나오는 drawer 부분을

android:clickable="true"
android:focusable="true"

위 옵션들을 추가해주기 바랍니다.

이벤트

bind.drawer.openDrawer(GravityCompat.END)

drawer layout을 열게 해줍니다.

bind.drawer.closeDrawer(GravityCompat.END)

drawer layout을 닫게 해줍니다.

bind.drawer.isDrawerOpen(GravityCompat.END)

drawer layout가 열려있는지 boolean 값으로 나타내줍니다.

Written on July 20, 2018