美文网首页安卓开发
安卓通过DrawerLayout实现侧滑菜单

安卓通过DrawerLayout实现侧滑菜单

作者: 蓝不蓝编程 | 来源:发表于2019-03-27 19:00 被阅读0次

    实现效果

    image

    主要代码

    1. MainActivity
    class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            setSupportActionBar(toolbar)
    
            val toggle = ActionBarDrawerToggle(
                this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
            )
            drawerLayout.addDrawerListener(toggle)
            toggle.syncState()
    
            naviView.setNavigationItemSelectedListener(this)
        }
    
        override fun onBackPressed() {
            if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
                drawerLayout.closeDrawer(GravityCompat.START)
            } else {
                super.onBackPressed()
            }
        }
    
        override fun onCreateOptionsMenu(menu: Menu): Boolean {
            menuInflater.inflate(R.menu.menu_toolbar, menu)
            return true
        }
    
        override fun onOptionsItemSelected(item: MenuItem): Boolean {
            return when (item.itemId) {
                R.id.action_settings -> true
                else -> super.onOptionsItemSelected(item)
            }
        }
    
        override fun onNavigationItemSelected(item: MenuItem): Boolean {
            when (item.itemId) {
                R.id.nav_camera -> {
                }
                R.id.nav_gallery -> {
                }
                R.id.nav_share -> {
                }
                R.id.nav_send -> {
                }
            }
    
            drawerLayout.closeDrawer(GravityCompat.START)
            return true
        }
    }
    
    1. 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/drawerLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            tools:openDrawer="start">
    
        <include
                layout="@layout/app_bar_main"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
    
        <com.google.android.material.navigation.NavigationView
                android:id="@+id/naviView"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:fitsSystemWindows="true"
                app:headerLayout="@layout/nav_header_main"
                app:menu="@menu/activity_main_drawer"/>
    
    </androidx.drawerlayout.widget.DrawerLayout>
    

    Demo源代码

    https://github.com/cxyzy1/drawerLayoutDemo

    安卓开发技术分享: https://www.jianshu.com/p/442339952f26
    更多技术总结好文,请关注:「程序园中猿」

    相关文章

      网友评论

        本文标题:安卓通过DrawerLayout实现侧滑菜单

        本文链接:https://www.haomeiwen.com/subject/jgdtbqtx.html