栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

NavigationView的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NavigationView的使用

情景

使用NavigationView实现侧滑菜单,并对里面的值进行相应的修改

自动生成

这样就可以实现一个侧滑菜单
在android studio中选择新建Navigation Drawer Activity项目时会自动生成相关代码

具体使用 布局文件 主界面 activity_main.xml



	
    

	
    


侧滑菜单头部 nav_header_main.xml


    

    

    

菜单部分 activity_main_drawer.xml

注意 这个文件要放在res/menu路径下




    
        
        
        
    
    

MainActivity
class MainActivity : AppCompatActivity() {

    private lateinit var appBarConfiguration: AppBarConfiguration
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        
        setSupportActionBar(binding.appBarMain.toolbar)
        
        val drawerLayout: DrawerLayout = binding.drawerLayout
        val navView: NavigationView = binding.navView //新建一个NavigationView的实例
        val navController = findNavController(R.id.nav_host_fragment_content_main)
        
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow
            ), drawerLayout
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)

		//如果想改变NavigationView头部nav_username的内容时,就要根据刚刚新建的NavigationView
        val bundle = intent.extras;
        if (bundle != null) {
            val headerView: View = navView.getHeaderView(0);//得到头部
            val textName: TextView = headerView.findViewById(R.id.nav_username);
            textName.text = bundle.getString("username")
        }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.main, menu)
        return true
    }

    override fun onSupportNavigateUp(): Boolean {
        val navController = findNavController(R.id.nav_host_fragment_content_main)
        return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
    }
}
补充:控制menu中的item是否可见

如果permission为0,nav_gallery和nav_slideshow不可见

val permission: Int = bundle.getInt("permission")
if (permission == 0){
    navView.menu.findItem(R.id.nav_gallery).isVisible = false
    navView.menu.findItem(R.id.nav_slideshow).isVisible = false
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号