Главное меню панели инструментов + меню BottomAppBar + BottomNavigationDrawerFragment Как и дизайн материала - PullRequest
0 голосов
/ 26 сентября 2018

То, чего я хочу достичь, похоже на это изображение ( Без верха NavigationView хотя ), но с Toolbar Меню + BottomAppBar Меню + BottomNavigationDrawerFragment точно так же, как материалдизайн:

enter image description here

Я мог бы управлять 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)

Дело в том,, в этом уроке ( например ) он использовал setSupportActionBar(bottom_app_bar) для установки SupportActionBar на BottomAppBar.Итак, если мы используем setSupportActionBar(bottom_app_bar) для BottomAppBar, это покажет, что BottomNavigationDrawerFragment + Меню могут обрабатываться на нижней стороне.

Но что насчет Toolbar и меню? Toolbar + пункты меню не будут обрабатываться или отображаться, если мы используем setSupportActionBar(bottomAppbar).

Вещи, которые я тестировал:

  • Может показаться смешным, но использовать два setSupportActionBar() для обоих Toolbar и BottomAppBar
  • Даже пытались раздуть два меню методом onCreateOptionsMenu(), но ни одно из них не сработало.

Вопрос , как мы можем иметь Top Toolbar Menu + BottomAppBar Menu + BottomNavigationDrawerFragment все вместе?

Есть мысли?

1 Ответ

0 голосов
/ 27 сентября 2018

Надеюсь, я нашел ответ.Поэтому, если мы хотим создать такие макеты (без Top NavigationDrawer - view), выполните следующие шаги:

Объявите Toolbar как обычно:

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

Override onCreateOptionsMenu с меню Top 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
}
...