gpt4 book ai didi

android - 顶部工具栏菜单 + BottomAppBar 菜单 + BottomNavigationDrawerFragment 就像 Material Design

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:52:54 25 4
gpt4 key购买 nike

我想要实现的就像这张图片(虽然没有顶部 NavigationView)但是有 Toolbar 菜单+ BottomAppBar 菜单 + BottomNavigationDrawerFragment 完全像 Material 设计:

enter image description here

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

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

这允许我为 BottomAppBar 扩展菜单并使用下面的代码加上 onCreateOptionsMenu()Toolbar 菜单和 setSupportActionBar ():

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

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

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

我测试过的东西是:

  • 可能听起来很荒谬,但为 ToolbarBottomAppBar 使用了两个 setSupportActionBar()
  • 甚至尝试通过 onCreateOptionsMenu() 方法膨胀两个菜单,但都没有用。

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

有什么想法吗?

最佳答案

希望我已经找到了答案。因此,如果我们要创建这样的布局(没有顶部 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 菜单并在应用程序底部替换新的 Menu 并在 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 - 顶部工具栏菜单 + BottomAppBar 菜单 + BottomNavigationDrawerFragment 就像 Material Design,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52507597/

25 4 0