Android

[Android] DrawerLayout 적용 및 appbar toggle

Dev.hs 2021. 11. 17. 16:11

Material Design

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        android:id="@+id/app_bar_main"
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="visible" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="start" />

</androidx.drawerlayout.widget.DrawerLayout>
  • 기존 ConstraintLayout을 DrawerLayout으로 변경
  • tools:opensDrawer → Design preview에서 Navigation부분을 보여준다.

MainActivity.kt

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val drawerLayout: DrawerLayout = binding.drawerLayout
        val topAppBar = binding.appBarMain.topAppBar
//        setSupportActionBar(topAppBar)

        ActionBarDrawerToggle(this, drawerLayout, topAppBar, 0, 0)

    }
}
  • setSupportActionBar 사용시 우측상단 more버튼이 사라짐.

  • 기존 Drawer template에는 androidx.appcompat.widget.Toolbar 를 사용하지만 com.google.android.material.appbar.MaterialToolbar 를 이용해서 만든 차이인것같은데 더 개발해보고 이부분은 다시..

  • ActionBarDrawerToggle을 사용해야 앱바의 menu버튼에 이벤트가 바인드된다.

  • ActionBarDrawerToggle API의 4,5번째 파라미터는 우선 크게 중요하진 않은것같다.

      public ActionBarDrawerToggle (Activity activity, 
                      DrawerLayout drawerLayout, 
                      Toolbar toolbar, 
                      int openDrawerContentDescRes, 
                      int closeDrawerContentDescRes)

    What is the ghost of openDrawerContentDescRes and closeDrawerContentDescRes