私が達成したいのは、この画像のようなものです(ただし、トップはNavigationView
ありません)が、Toolbar
メニュー+BottomAppBar
メニュー+BottomNavigationDrawerFragment
マテリアルデザインとまったく同じです。
私は(私の答え)BottomAppBar
によってメニューを管理することができました:replace()
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)
The point is, in this tutorial (for example), he used setSupportActionBar(bottom_app_bar)
for setting SupportActionBar
on the BottomAppBar
. So, if we use setSupportActionBar(bottom_app_bar)
for the BottomAppBar
, it will show the BottomNavigationDrawerFragment
+ Menus are handlable on the Bottom Side.
But, what about Toolbar
and menus? Toolbar
+ menu items won't be handlable nor showing up if we use setSupportActionBar(bottomAppbar)
.
The things that I have tested are:
setSupportActionBar()
for both Toolbar
and BottomAppBar
onCreateOptionsMenu()
method but none worked.The question is, How can we have Top Toolbar
Menu + BottomAppBar
Menu + BottomNavigationDrawerFragment
all together?
Any thoughts?
うまくいけば、私は答えを見つけました。したがって、そのようなレイアウトを作成する場合(トップなしNavigationDrawer
- view
)、手順は次のとおりです。
Toolbar
いつものように宣言します:
val toolbar = findViewById<Toolbar>(R.id.myToolbar)
setSupportActionBar(toolbar)
オーバーライドonCreateOptionsMenu
トップとToolbar
メニュー:
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
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加