appbar、toolbar、actionbar 之间的确切区别是啥?以及何时专门使用它们?

Posted

技术标签:

【中文标题】appbar、toolbar、actionbar 之间的确切区别是啥?以及何时专门使用它们?【英文标题】:what is exact difference between appbar, toolbar, actionbar ? and when to use them specifically?appbar、toolbar、actionbar 之间的确切区别是什么?以及何时专门使用它们? 【发布时间】:2017-11-14 22:30:19 【问题描述】:

appbarToolbarActionbar 之间的确切区别是什么?以及何时专门使用它们? 我试图找到它们,但它让我感到困惑,所以任何朋友可以向我解释它们之间的确切区别以及何时使用它们或者这是单个组件的相同名称吗?

【问题讨论】:

别忘了导航栏! @ScottBiggs navbar 不同于 appbar、toolbar 等,navbar 与系统相关 【参考方案1】:
    Toolbar 在应用程序内容中使用的标准 toolbar

Toolbar 是在应用程序布局中使用的操作栏的概括。虽然操作栏传统上是由框架控制的 Activity 的不透明窗口装饰的一部分,但 Toolbar 可以放置在视图层次结构中的任意嵌套级别。应用程序可以选择使用setActionBar() 方法将Toolbar 指定为Activity 的操作栏。

Toolbar 支持比ActionBar 更集中的功能集。从头到尾,toolbar 可能包含以下可选元素的组合:

一个导航按钮。这可能是向上箭头、导航菜单切换、关闭、折叠、完成或应用程序选择的其他字形。此按钮应始终用于访问Toolbar 及其所指内容的容器内的其他导航目的地,或者以其他方式离开Toolbar 所指的当前上下文。导航按钮在工具栏的最小高度内垂直对齐(如果已设置)。

品牌徽标图片。这可以延伸到条的高度,可以任意宽。

标题和副标题。标题应该是工具栏在导航层次结构中的当前位置以及其中包含的内容的路标。副标题(如果存在)应指示有关当前内容的任何扩展信息。如果应用使用徽标图像,则应强烈考虑省略标题和副标题。

一个或多个自定义视图。应用程序可以将任意子视图添加到Toolbar。它们将出现在布局中的这个位置。如果子视图的Toolbar.LayoutParams 指示重力值为 CENTER_HORIZONTAL,则在测量所有其他元素后,视图将尝试在工具栏中剩余的可用空间内居中。 一个动作菜单。操作菜单将固定在Toolbar 的末尾,提供一些频繁、重要或典型的操作,以及用于其他操作的可选溢出菜单。操作按钮在工具栏的最小高度内垂直对齐(如果已设置)。

2.Actionbar 操作栏是每个屏幕顶部的专用区域,通常在整个应用程序中持续存在。

它提供了几个关键功能:

以可预测的方式(例如“新建”或“搜索”)突出重要操作并易于访问。

支持应用内一致的导航和视图切换。

通过为很少使用的操作提供操作溢出来减少混乱。

为您的应用提供一个标识的专用空间。

3.Appbar 应用栏,也称为操作栏,是应用活动中最重要的设计元素之一,因为它提供了用户熟悉的视觉结构和交互元素。使用应用栏使您的应用与其他安卓应用保持一致,让用户快速了解如何操作您的应用,并获得出色的体验。应用栏主要功能如下:

为您的应用提供身份并指示用户在应用中的位置的专用空间。

以可预测的方式访问重要操作,例如搜索。

支持导航和视图切换(带有选项卡或下拉列表)。

编辑

Action bar 传统上是由框架控制的 Activity 不透明窗口装饰的一部分,但工具栏可以放置在视图层次结构中的任何嵌套级别。 toolbar 提供了比ActionBar 更多的功能。 Toolbar 可能包含从头到尾的元素组合。

重要提示:

Toolbar’sActionBar 更灵活。我们可以很容易地修改它的颜色、大小和位置。我们还可以在其中添加标签、徽标、导航图标和其他视图。在 Material Design 中,android 更新了 AppCompat 支持库,以便我们可以在运行 API 级别 7 及更高级别的设备中使用 Toolbar’s...

【讨论】:

【参考方案2】:

App bar 是一个组件名称from the design,而Toolbar 和ActionBar 类是关于实现的。所以问题是——Toolbar 和 ActionBar 有什么区别。

简而言之,ActionBar是app bar组件的一个初始实现,它绑定到Activity。最初它甚至不是 Activity 布局的一部分,而是系统渲染的装饰。

后来引入了Toolbar,与A​​ctionBar不同的是,Toolbar没有绑定到Activity,你可以把它放在你布局中任何你想要的地方,它有一个更清晰的API。为了让 Toolbar 的采用更容易,AppCompatActivity 类中有 setSupportActionBar() 方法,因此您可以通过 ActionBar API 使用 Toolbar,这就是很多混乱的来源。

那么,您应该在现代 Android 应用中使用哪个类?毫无疑问 - 工具栏,或者来自MDC library - MaterialToolbar 的更高级版本。但是正如我上面提到的,工具栏可以用作独立的解决方案,也可以使用setSupportActionBar() 方法设置为活动操作栏。看看这个问题Is setSupportActionbar required anymore? 和answer 了解更多详情。

【讨论】:

【参考方案3】:

我会说它们都是应用程序屏幕上端的同一个容器视图...Toolbar 是定义此框功能的 Java 类的名称,但在 Android 开发者网站上它们是称它为App Bar。据我所知,它是一个增强的action bar,主要用于Material Design之前。


编辑#1:顺便说一句,我建议在创建应用程序时使用App Bar 教程,因为这是推荐的方法。

【讨论】:

以上是关于appbar、toolbar、actionbar 之间的确切区别是啥?以及何时专门使用它们?的主要内容,如果未能解决你的问题,请参考以下文章

android:Toolbar用法探析

Android Toolbar,你想知道的都在这里了

什么是 AppBar 与 ToolBar?

ActionBar vs Toolbar 或 ActionBar and Toolbar

片段和导航抽屉的不同工具栏

如何使文本出现在 mui AppBar/Toolbar 组件的右侧?