效果图
NavigationView
提供了侧边栏导航,一般在HeaderLayout
使用背景图片,在menu部分使用分组的菜单,提高布局美感。
关键代码
class MainActivity : AppCompatActivity() {
private var mDrawerToggle: ActionBarDrawerToggle? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val drawerLayout = findViewById<DrawerLayout>(R.id.drawer_layout)
val toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)
supportActionBar!!.setHomeButtonEnabled(true)
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
mDrawerToggle = ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close)
mDrawerToggle!!.syncState()
drawerLayout.addDrawerListener(mDrawerToggle!!)
val navigationView = findViewById<View>(R.id.navigation_view) as NavigationView
navigationView.getHeaderView(0).setOnClickListener {
drawerLayout.closeDrawer(navigationView)
Toast.makeText(this@MainActivity, "Header View is clicked!", Toast.LENGTH_SHORT).show()
}
navigationView.setNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.menu_home -> Toast.makeText(this@MainActivity, "Home is clicked!", Toast.LENGTH_SHORT).show()
R.id.menu_settings -> Toast.makeText(this@MainActivity, "Settings is clicked!", Toast.LENGTH_SHORT).show()
R.id.menu_share -> Toast.makeText(this@MainActivity, "Share is clicked!", Toast.LENGTH_SHORT).show()
R.id.menu_about -> Toast.makeText(this@MainActivity, "About is clicked!", Toast.LENGTH_SHORT).show()
}
drawerLayout.closeDrawer(navigationView)
false
}
}
}
MainActivity
的布局文件代码如下:
<?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"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/purple_700"
app:titleTextColor="@color/white"/>
</RelativeLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer_view" />
</androidx.drawerlayout.widget.DrawerLayout>
源码地址
https://github.com/yurensan/MaterialDesignDemo
我是予人三,希望大家点赞支持我哦~ 有大家的鼓励我会分享更多内容