ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – 顶级工具栏菜单BottomAppBar菜单BottomNavigationDrawerFragment就像Material Design一样

2019-05-27 08:11:59  阅读:1029  来源: 互联网

标签:android android-toolbar android-menu android-navigation-drawer android-bottomapp


我想要实现的是这个图像(虽然没有顶部NavigationView)但是使用工具栏菜单BottomAppBar菜单BottomNavigationDrawerFragment与材料设计完全相同:

enter image description here

我可以通过replace()(My Answer)管理BottomAppBar菜单:

val bottomBar = findViewById<BottomAppBar>(R.id.bottomAppBar)
bottomBar.replaceMenu(R.menu.menu_main)

这允许我为BottomAppBar扩充菜单并使用下面的代码加onCreateOptionsMenu()用于工具栏菜单和setSupportActionBar():

val toolbar = findViewById<Toolbar>(R.id.myToolbar)
setSupportActionBar(toolbar)

关键是,在这个tutorial(例如)中,他使用setSupportActionBar(bottom_app_bar)在BottomAppBar上设置SupportActionBar.因此,如果我们对BottomAppBar使用setSupportActionBar(bottom_app_bar),它将显示BottomNavigationDrawerFragment菜单在底部可以处理.

但是,工具栏和菜单呢?如果我们使用setSupportActionBar(bottomAppbar),工具栏菜单项将无法处理或显示.

我测试的东西是:

>可能听起来很荒谬,但是对于Toolbar和BottomAppBar都使用了两个setSupportActionBar()
>甚至尝试通过onCreateOptionsMenu()方法来扩充两个菜单,但都没有工作.

问题是,我们如何才能将Top Toolbar菜单BottomAppBar菜单BottomNavigationDrawerFragment放在一起?

有什么想法吗?

解决方法:

希望我找到了答案.所以,如果我们想创建这样的布局(没有Top NavigationDrawer – view)以下是步骤:

像往常一样声明工具栏:

val toolbar = findViewById<Toolbar>(R.id.myToolbar)
setSupportActionBar(toolbar)

使用“顶部工具栏”菜单覆盖onCreateOptionsMenu:

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.top_menu, menu)
    return super.onCreateOptionsMenu(menu)
}

使用以下方法处理BottomBar菜单并替换应用程序底部的新菜单&选择NavigationIcon时显示BottomSheetFragment:

val bottomBar = findViewById<BottomAppBar>(R.id.bottomAppBar)
bottomBar.replaceMenu(R.menu.bottom_menu)
bottomBar.setNavigationOnClickListener {
        val bottomNavDrawerFragment = BottomNavigationDrawerFragment()
        bottomNavDrawerFragment.show(supportFragmentManager, bottomNavDrawerFragment.tag)
    }
bottomBar.setOnMenuItemClickListener { menuItem ->

        when (menuItem.itemId) {
            R.id.search_Action ->{
                Toast.makeText(this@MainActivity, "Clicked", Toast.LENGTH_LONG).show()
            }
        }
         true
    }

最后,重写onOptionsItemSelected():

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
    when (item!!.itemId) {

        R.id.action_settings -> {

            startActivity(Intent(this@MainActivity, SettingsActivity::class.java))

        }

        R.id.changeView -> {
            toast("Test")

        }
    }
    return true
}

标签:android,android-toolbar,android-menu,android-navigation-drawer,android-bottomapp
来源: https://codeday.me/bug/20190527/1161772.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有