Toolbar早在2014年伴随着Android 5.0 和 Material Design 发布了,不管是Actionbar、Toolbar,Material Design 中对之有一个统一的名称 Appbar。 那么对比Actionbar,看Toolbar有何不同之处:

更易定制

看Google的描述:

In this rease,Android introduces a new Toolbar widget. This is a generalization of the Action Bar pattern that gives you much more control and flexibility. Toolbar is a view in your hierarchy just like any other, making it easier to interleave with the rest of your views, animate it, and react to scroll events. You can also set it as your Activity’s action bar, meaning that your standard options menu actions will be display within it.

一句话,有了Toolbar,Android Developer 可以对 Appbar 进行更对个性化定制:

如果我们需要Title不要贴着左边,而是居中,或者Actionbar上要放个CustomView,因为Actionbar 属于Window DecorView的一部分,只能通过API进行操控,这时估计只能通过setCustomView()来解决,或者直接隐藏Actionbar,自定义一个通用组件来充当Actionbar,WTF。

如果使用Toolbar,可以直接这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
<android.support.v7.widget.Toolbar
android:id="@id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
android:background="@color/primary_color">


<TextView
android:id="@id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/white" />

</android.support.v7.widget.Toolbar>

因为Toolbar不再属于Window DecorView 的一部分,而是直接继承自ViewGroup,可以直接在Layout中声明自己想要的View,相对于 Actionbar 可操控性有了质的提升。

符合 Material Design 规范

Material Design 是一种良好的设计,越来越多的App 再做转变。

使用方法

1.在Theme中隐藏Actionbar

1
2
3
4
<style name="AppTheme.Base" parent="Theme.AppCompat">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>

2.在Activity Layout文件中加入Toolbar 如上(更易定制内容中所写)

3.在Activity中设置

1
2
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Toolbar 的使用大致和 Actionbar 相同,这里不再介绍。