드로어 레이아웃 – 옆에서 열리는 화면 구성
드로어 레이아웃은 액티비티 화면에 보이지 않던 내용이 왼쪽이나 오른쪽에서 손가락의 움직임에 따라 밀려 나오는 기능을 말합니다.
그래들 파일의 dependencies항목에 드로어 레이아웃 선언
implementation 'androidx.drawerlayout:drawerlayout:1.1.1'
드로어 레이아웃을 액티비티에 적용시키려면 레이아웃 XML 파일에서 드로어 메뉴가 출력되어야 하는 부분의 태그를 DrawerLayout으로 선언해줘야 합니다. DrawerLayout 아래에는 뷰를 2개 선언해줘야 합니다. 이렇게 해주면 자동으로 첫 번째 하위 태그 부분을 액티비티 화면에 출력해주고 두 번째 하위 태그 부분이 안 보이다가 끌려 나옵니다.
드로어 레이아웃 구성
<androidx.drawer layout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout ... 생략 ... >
</LinearLayout>
<TextView
android:layout_gravity="start" />
</androidx.drawerlayout.widget.DrawerLayout>
두번째 태그의 android:layout_gravity 속성 값을 이용하여 화면에서 나오는 방향을 지정할 수도 있습니다. 즉, left, right, start를 지정하고 start값은 사용하는 언어의 방향에 따라 left, right가 자동으로 결정됩니다.(한국어는 왼쪽)
툴바 영역에 토글 버튼또한 함께 제공합니다. 토글 버튼은 ActionBarDrawerToggle 클래스에서 제공합니다.
드로어 메뉴 토글 버튼 적용
class Drawer Activity : AppCompatActivity() {
lateinit var toggle: ActionBarDrawerToggle
override fun onCreate(savedInstanceState: Bundle?) {
(... 생략 ...)
// ActionBarDrawerToggle 버튼 적용
toggle = ActionBarDrawerToggle(this, binding.drawer, R.string.drawer_opened,
R.string.drawer_closed)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
toggle.syncState()
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// 이벤트가 토글 버튼에서 발생하면
if (toggle.onOptionsItemSelected(item)) {
return true
}
return super.onOptionsItemSelected(item)
}
}
ActionBarDrawerToggle 생성자의 두 번째 매개변수는 토글 버튼으로 여닫는 드로어 객체입니다. 그리고 세 번째와 네 번째 매개변수는 문자열 리소스로, 드로어가 열리거나 닫혔을 때의 상태를 표현한 문자열입니다.