ʍѳђ*_*ઽ૯ท 7 android android-menu navigation-drawer android-toolbar android-bottomappbar
我想要实现的就像这个图像(虽然没有顶部NavigationView)但Toolbar菜单+ BottomAppBar菜单+ BottomNavigationDrawerFragment完全像材料设计:
我可以BottomAppBar通过replace()(我的答案)管理菜单:
val bottomBar = findViewById<BottomAppBar>(R.id.bottomAppBar)
bottomBar.replaceMenu(R.menu.menu_main)
Run Code Online (Sandbox Code Playgroud)
这让我膨胀的菜单为BottomAppBar以下代码加使用onCreateOptionsMenu()的Toolbar菜单和setSupportActionBar():
val toolbar = findViewById<Toolbar>(R.id.myToolbar)
setSupportActionBar(toolbar)
Run Code Online (Sandbox Code Playgroud)
问题的关键是,在该教程(例如)时,他使用setSupportActionBar(bottom_app_bar)用于设置SupportActionBar在BottomAppBar.所以,如果我们使用setSupportActionBar(bottom_app_bar)了BottomAppBar,它会显示BottomNavigationDrawerFragment+菜单是在底侧handlable.
但是,Toolbar菜单怎么样? Toolbar如果我们使用,+菜单项将无法处理或显示setSupportActionBar(bottomAppbar).
我测试的东西是:
setSupportActionBar()两个Toolbar和BottomAppBaronCreateOptionsMenu()方法膨胀两个菜单但没有工作.问题是,我们如何才能将Top ToolbarMenu + BottomAppBarMenu + BottomNavigationDrawerFragment全部放在一起?
有什么想法吗?
希望我找到了答案.因此,如果我们想要创建这样的布局(没有顶部NavigationDrawer- view)以下是步骤:
Toolbar像往常一样宣布:
val toolbar = findViewById<Toolbar>(R.id.myToolbar)
setSupportActionBar(toolbar)
Run Code Online (Sandbox Code Playgroud)
onCreateOptionsMenu 使用顶级Toolbar菜单覆盖:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.top_menu, menu)
return super.onCreateOptionsMenu(menu)
}
Run Code Online (Sandbox Code Playgroud)
使用以下方法处理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
}
Run Code Online (Sandbox Code Playgroud)
最后,覆盖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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |