工具栏作为自我管理的ActionBar vs Toolbar作为框架管理的ActionBar

时间:2015-06-02 21:28:53

标签: android android-actionbar android-actionbar-compat android-toolbar

好吧,我想了解如果我将Toolbar用作自我管理的ActionBar而不使用setSupportActionBar,我会失去什么。

AFAIK,ActionBar所做的全部内容,为徽标,导航和菜单项提供占位符,并让Fragments添加/自定义菜单项。

使用Toolbar.setLogo()Toolbar.setNavigationIcon()Toolbar.setNavigationOnClickListener()Toolbar.inflateMenu() apis可以实现相同的功能。当然,将菜单处理逻辑指向Fragments可能会丢失,但我认为如果Activity知道哪个Fragment位于顶部并相应地更改菜单项,那就不是那么重要了

我正在努力确保:

  • 如果我只使用ActionBarToolbar(而不使用MenuItems)就可以实现每项setSupportActionBar()功能。
  • 没有详尽的ActionBar apis知识是否可以。一些ActionBar api非常令人困惑。使用setHomeAsUp api显示汉堡图标,后退图标等,感觉不对。如果有人今天开始学习机器人,他们甚至需要了解框架ActionBar apis?

更新:在CoordinatorLayout and the app bar部分的文章Android Design Support Library中,我了解到新的范例应用栏是操作栏的替代品范例。我认为行动栏很快就会被弃用,我们应该习惯新的 app bar 范例,它涵盖了新的材料设计用户体验。

3 个答案:

答案 0 :(得分:2)

是的,您可以在ActionBar中使用Toolbar的类似功能。

主要区别在于Toolbar成为View的一部分所以我们可以更有乐趣与他们一起获得Scrolling Techniques

您可以Toolbar分别使用View&执行ActionBar类似的功能。例如,在我的某个应用中,我使用2 Toolbar一个设置为setSupportActionBar(),而其他只用于其他一些功能。

结论:如果您想将Toolbar用作自己或框架,那么这取决于您的要求。尽管如此,你可以将它们用作两者。

我希望这能很好地回答你的问题。

答案 1 :(得分:0)

对我来说你是对的。

来自#element{ background-clip: content-box; background-origin: content-box; } 源代码,方法AppCompatDelegate

  

当设置为非null值时,将返回getSupportActionBar()方法        一个ActionBar对象,可用于控制给定的工具栏,就像它一样        传统的窗户装饰动作吧。工具栏的菜单将填充        活动的选项菜单和导航按钮将通过标准连接        android.R.id.home菜单选择动作。

因此,如果不是全部,这些都是您将获得的好处。正如您所说,通过setSupportActionBar() API实现导航和菜单膨胀很容易。但是,我不会通过不致电Toolbar来了解您获得的内容。

答案 2 :(得分:0)

使用setSupportToolBar()Actionbar相同,ToolBar ToolBar的唯一原因是多功能性,FragmentView相同} s,一切都取决于你如何实现内容,而且ActionbarToolbar

有点无聊且受到很多限制