代码之家  ›  专栏  ›  技术社区  ›  ʍѳђઽ૯ท

顶部工具栏菜单+底部应用程序栏菜单+底部导航DrawerFragment,就像材质设计一样

  •  4
  • ʍѳђઽ૯ท  · 技术社区  · 6 年前

    我想要实现的是像这幅图像( without top navigationview though )但是用 toolbar menu+ bottomAppBar menu+ bottomnavigationDrawerFragment exactly like material design:。

    我可以通过 replace()管理 BottomAppBar menu( replace())( my answer”(我的答案)::

    val Bottombar=findViewByID<BottomAppBar>(r.id.BottomAppBar)
    BottomBar.replaceMenu(右菜单菜单主菜单)
    < /代码> 
    
    

    它允许我为BottomAppBar充气菜单,并在下面使用codes plusOnCreateOptionsMenu()for thetoolbarmenu andSetSupportActionBar()::

    val toolbar=findViewByID<toolbar>(r.id.mytoolbar)
    设置支持操作栏(工具栏)
    < /代码> 
    
    

    该点是,在此tutorial(例如),he usedsetSupportActionBar(bottom_app_Bar)for settingsupportActionBaron thebottomAppBar。因此,如果我们使用setSupportActionBar(Bottom_App_Bar)for theBottomAppBar,it will show theBottomNavigationDrawerFragment+menusare handleable on the Bottom Side.

    但是,关于工具栏和菜单呢?toolbar+menu items won't handleable nor showing up if we usesetSupportActionBar(bottomAppBar).

    我测试过的是:

    • 可能听起来很荒谬,但使用了两个setSupportActionBar()for bothtoolbarandbottomAppBar
    • 甚至尝试通过onCreateOptionsMenu()对两个菜单进行充气,但都不起作用。

    问题是,我们如何才能拥有toptoolbarmenu+bottomAppbarmenu+bottomNavigationDrawerFragmentall together?

    有什么想法吗?BottomAppBar菜单+BottomNavigationDrawerFragment与材料设计完全相同:

    enter image description here

    我可以应付底部AppBar菜单按replace()(My Answer):

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

    我可以把菜单放大底部AppBar并用于下面的代码加onCreateOptionsMenu()对于工具栏菜单和setSupportActionBar():

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

    重点是,在这tutorial(例如他用过setSupportActionBar(bottom_app_bar)用于设置SupportActionBar底部AppBar. 所以,如果我们使用设置支撑杆(底部支撑杆)对于底部AppBar,它将显示底部导航图碎片+菜单可在底部操作。

    但是,怎么样?工具栏菜单呢?工具栏+如果我们使用setSupportActionBar(bottomAppbar).

    我测试过的是:

    • 听起来很可笑,但用了两个设置支持操作栏()对于两者工具栏底部AppBar
    • 甚至试图通过OnCreateOptions菜单()。方法,但没有成功。

    问题是,我们怎么能有顶级的呢?工具栏菜单+底部AppBar菜单+底部导航图碎片都在一起吗?

    有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  6
  •   ʍѳђઽ૯ท    6 年前

    希望我找到了答案。所以如果我们想创建这样的布局(没有顶部 NavigationDrawer - view )步骤如下:

    宣布 Toolbar 像往常一样:

    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 菜单和替换新的 Menu 在应用程序底部显示 BottomSheetFragment 什么时候 NavigationIcon 挑选出来的:

    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
    }