【问题标题】:Toolbar as self-managed ActionBar vs Toolbar as framework managed ActionBarToolbar 作为自我管理的 ActionBar 与 Toolbar 作为框架管理的 ActionBar
【发布时间】:2015-06-02 21:28:53
【问题描述】:

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

AFAIK,ActionBar 所做的只是为徽标、导航和菜单项提供占位符,还让Fragments 添加/自定义菜单项。

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

我正在努力确保:

  • 如果我可以通过使用ToolbarMenuItems(而不是使用setSupportActionBar())来实现所有ActionBar 功能。
  • 可以不全面了解ActionBar api。一些ActionBar api 非常令人困惑。使用setHomeAsUp api 显示汉堡图标、返回图标等,感觉不对。如果有人今天开始学习android,他们还需要了解框架的ActionBar api吗?

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

【问题讨论】:

  • 您对设计支持库的更新是正确的,但截至今天和 AFAIK,在某些情况下您仍然需要 getSupportActionBar().setDisplayHomeAsUpEnabled(true)stackoverflow.com/q/31475986/603270

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


【解决方案1】:

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

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

您可以将Toolbar 单独用作View 并执行ActionBar 类似的功能。例如,在我的一个应用程序中,我使用了 2 个Toolbar,其中一个设置为setSupportActionBar(),而另一个仅用于其他一些功能。

结论:如果您想使用Toolbar 作为自身或框架,这取决于您的要求。不过你可以同时使用它。

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

【讨论】:

    【解决方案2】:

    对我来说你是对的。

    来自AppCompatDelegate源代码,方法setSupportActionBar()

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

    所以这些是您将获得的大部分(如果不是全部)好处。正如您所说,通过Toolbar API 很容易实现导航和菜单膨胀。但是,我看不出您不拨打setSupportActionBar()获得什么。

    【讨论】:

      【解决方案3】:

      使用setSupportToolBar() 与旧的Actionbar 相同,ToolBarToolBar 的唯一原因是多功能性,就像Fragments 是Views 一样,一切都取决于你如何实现东西,以及旧的Actionbar 也有点无聊,而且对Toolbar 有很大的限制

      【讨论】:

        猜你喜欢
        • 2016-03-14
        • 1970-01-01
        • 2015-04-04
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多