728x90
반응형
토글버튼을 만드는 방법은 여러가지이다.
이번에 소개할 방법은 xml에 직접 ToggleButton을 만드는 것이 아닌
setSupportActionBar를 이용해서 만들어보자.
이번에 하는 예제는!
토글 버튼을 누르면 Drawer에서 NavigationView를 나오게끔한다.
※ 뷰바인딩은 필수이다. (gradle)
buildFeatures{
viewBinding true
}
1. activity_main.xml
ToggleButton자체를 만들지 않았다. 대신 Appbar와 toolbar를 살려둔다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigationView"
android:layout_gravity="start"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:src="@drawable/ic_launcher_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
</LinearLayout>
2.string.xml
<resources>
<string name="app_name">Togglebutton</string>
<string name="drawer_open">Open Drawer</string>
<string name="drawer_close">Close Drawer</string>
</resources>
3. theme.xml
<style name="Theme.Togglebutton" parent="Base.Theme.Togglebutton" />
4. MainActivity.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.drawerlayout.widget.DrawerLayout
import com.athena.togglebutton.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
lateinit var toggle: ActionBarDrawerToggle
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_main)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//1. 액션바대신에 툴바로 대체한다.
setSupportActionBar(binding.toolbar)
//2. ActionBarDrawerToggle 버튼적용
toggle = ActionBarDrawerToggle(this,binding.drawerlayout, R.string.drawer_open, R.string.drawer_close)
//3.업버튼 활성화
supportActionBar?.setDisplayHomeAsUpEnabled(true)
//4. 토글 sync
toggle.syncState()
}
//5. 이 함수가 있어야 토글버튼을 누르면 Drawer가 들어갔다 나갔다한다.
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if(toggle.onOptionsItemSelected(item)){
return true
}
return super.onOptionsItemSelected(item)
}
}
728x90
반응형
'Android Kotlin' 카테고리의 다른 글
Android Studio 보일러플레이트 (0) | 2023.06.12 |
---|---|
AndroidStudio Coroutine : 경량스레드 (0) | 2023.06.05 |
AndroidStudio Jetpack LiveData (1) | 2023.06.02 |
Android Studio AutoCompleteTextView 클릭 시, Fragment로 전환하기 (0) | 2023.04.03 |
Android Studio strings.xml 사용하기 (0) | 2023.04.02 |