本文来源:http://blog.mosil.biz/2014/10/android-toolbar/
1. 概述
Android 3.0 Android 推了 ActionBar,而到了2013 年 Google 开始大力地推动所谓的 android style,想要逐渐改善过去 android 纷乱的界面设计,希望让终端使用者尽可能在 android 手机有个一致的操作体验。ActionBar 过去最多人使用的两大套件就是 ActionBarSherlock 以及官方提供在 support library v 7 里的 AppCompat。
既然会有本篇跟各位介绍Toolbar,也意味着官方在某些程度上认为 ActionBar 限制了 android app 的开发与设计的弹性,而在 material design 也对之做了名称的定义:App bar。接下来为各位分成几个阶段进行说明,如何在 android app 中用 toolbar 这个控件来做出一个基本的 app bar。
2. 基础使用
2.1 style
style要调整的地方有两个
一在 res/values/styles.xml中
二在 /res/values-v21/styles.xml中
为了之后设定方便,我们先在 res/values/styles.xml 里增加一个名为 AppTheme.Base 的风格
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
<!-- 使用 API Level 22 编译的話,要拿掉前缀android: -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:textColorPrimary">#fff</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
再来调整Android 5.0的style: /res/values-v21/styles.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.V21">
</style>
<style name="AppTheme.V21" parent="AppTheme.Base" >
<item name="android:colorControlNormal">#0f0</item>
<item name="android:colorButtonNormal">#0f0</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:navigationBarColor">@color/test</item>
</style>
</resources>
2.2 Layout
在 activity_main.xml 里面添加 Toolbar 控件:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary">
</android.support.v7.widget.Toolbar>
注意要用 support v7 里的 toolbar,不然只有 API Level 21 也就是 Android 5.0 以上的版本才能使用。
2.3 代码
在 MainActivity.java 中加入 Toolbar 的声明:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("标题");
toolbar.setSubtitle("子标题");
toolbar.setLogo(R.mipmap.tes);
setSupportActionBar(toolbar);
// Navigation Icon要设置在setSupoortActionBar后才有作用
// 否则会出现 back Button
toolbar.setNavigationIcon(R.mipmap.ic_launcher);
3. 自定义颜色(Customization color)
4. 控件 (component)