1. Toolbar
2. Toolbar 사용 방법
1) 액션바가 출력되지 않게 설정
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.AndroidEx"
parent="Theme.MaterialComponents.DayNight.NoActionBar">
...
2) XML 파일에 Toolbar 등록
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.Toolbar.Primary" />
3) Toolbar 적용
setSupportActionBar(binding.toolbar)
1. ExtendedFloatingActionButton
2. ExtendedFloatingActionButton 사용 방법
1) 레이아웃 등록
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:text="extended FAB"
app:icon="@android:drawable/ic_input_add"/>
2) Activity에서 Click 이벤트 작성
binding.fab.setOnClickListener {
when(binding.fab.isExtended) {
true -> binding.fab.shrink()
false -> binding.fab.extend()
}
}
1. DrawerLayout
2. DrawerLayout 사용 방법
1) 레이아웃 등록
<androidx.drawerlayout.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>
2) 토글 버튼
toggle = ActionBarDrawerToggle(this, binding.drawer, R.string.drawer_opened, R.string.drawer_closed)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
// 스와이프로 열고 닫을 때와 토글 버튼으로 열고 닫을 때를 싱크 맞추기 위한 것
toggle.syncState()
// 토글 버튼이 메뉴 취급이 되어서 메뉴에서 실행되는 onOptionsItemSelected 함수가 실행
// onOptinosItemSelected가 토글에서 실행되면 메뉴에서의 로직이 실행되지 않도록 처리
override fun onOptionsItemSelected(item:MenuItem): Boolean {
if(toggle.onOptionItemSelected(item)) {
return true
}
return super.onOptionsItemSelected(item)
}
3. NavigationView
<com.google.android.material.navigation.NavigationView
android:id="@+id/main_drawer_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
// header 부분의 xml 파일 지정
app:headerLayout="@layout/navigation_header"
// menu 부분의 xml 파일 지정
app:menu="@menu/menu_navigation" />