개요
제목 그대로의 문제다.. 이거 해결할려고 밤을 샜는데 의외로 간단한 문제였다. XX
코드
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 메인 콘텐츠 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- 상단 바 -->
<include layout="@layout/toolbar" />
<!-- 텍스트뷰 -->
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="기본 텍스트" />
</LinearLayout>
<!-- 좌측 드로어 -->
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">
<menu xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/nav_item1"
android:title="아이템 1" />
<item
android:id="@+id/nav_item2"
android:title="아이템 2" />
</menu>
</com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
MainActivity.kt
kotlinCopy code
import android.os.Bundle
import android.view.MenuItem
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GravityCompat
import com.google.android.material.navigation.NavigationView
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
private lateinit var drawerLayout: DrawerLayout
private lateinit var textView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
drawerLayout = findViewById(R.id.drawerLayout)
textView = findViewById(R.id.textView)
val navigationView: NavigationView = findViewById(R.id.navigationView)
navigationView.setNavigationItemSelectedListener(this)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_menu) // 좌측 상단 아이콘을 드로어로 변경
toolbar.setNavigationOnClickListener {
drawerLayout.openDrawer(GravityCompat.START) // 좌측 상단 아이콘 클릭 시 드로어 열기
}
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
// 네비게이션 아이템 클릭 이벤트 처리
when (item.itemId) {
R.id.nav_item1 -> {
textView.text = "아이템 1이 클릭되었습니다."
drawerLayout.closeDrawer(GravityCompat.START) // 드로어 닫기
return true
}
R.id.nav_item2 -> {
textView.text = "아이템 2가 클릭되었습니다."
drawerLayout.closeDrawer(GravityCompat.START) // 드로어 닫기
return true
}
// 다른 아이템들에 대한 처리 추가
// ...
}
return false
}
override fun onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START) // 드로어가 열려있을 때 뒤로가기 버튼 클릭 시 드로어 닫기
} else {
super.onBackPressed()
}
}
}