Toolbar
在前面的博文《 Android开发笔记(二十)顶部导航栏》中,我们学习了ActionBar的用法,可是ActionBar着实是不怎么好用,比如文字风格不能定制、图标不能定制,而且还存在低版本的兼容性问题,所以实际开发中大家还是不倾向使用ActionBar。为此,Android提供了加强版的工具栏控件即Toolbar,因为Toolbar继承自ViewGroup,而且可在布局文件中像其它布局视图一样使用,所以灵活性大大的提高了。既然Android都与时俱进了,那我们也不能落后,现在就来好好学学Toolbar的用法。导入android-support-v7-appcompat
Toolbar包含在android-support-v7-appcompat.jar包中,但app工程还不能直接使用这个jar包,因为v7-appcompat是一个完整的工程,jar包里面大量引用了工程中的图片资源,所以我们要先把v7-appcompat导入为一个库工程,然后app工程再引用这个库工程。具体步骤如下所示:1、SDK的Extra组件中的“Android Support Library”要更新到最新版本。
2、把v7-appcompat导入为一个库工程,v7-appcompat的源路径是sdk\extras\android\support\v7\appcompat。
3、把project.properties中的target改为23(注意库工程和app工程都要改),不然会出现如下错误:
Error:Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
4、删除values-v11与values-v14下面的styles.xml(注意库工程和app工程都要删),不然编译报错:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.exmtoolbar/com.example.exmtoolbar.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
在项目中引入Toolbar
因为Toolbar与ActionBar都占着顶部导航栏的位置,所以要想引入Toolbar就得先关闭ActionBar啦,具体步骤如下所示:1、在styles.xml中定义一个不包含ActionBar的风格样式
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/blue_light</item>
<item name="colorPrimaryDark">@color/blue_light</item>
<item name="colorAccent">@color/blue_light</item>
</style>
2、修改AndroidManifest.xml,把application节点的android:theme属性值改为第一步定义的风格,如android:theme="@style/AppBaseTheme"
3、页面布局文件的根节点改为LinearLayout,且为vertical垂直方向;然后增加一个Toolbar元素,因为Toolbar本质是个ViewGroup,所以也可在它下面添加别的控件。下面是个布局例子片段:
<android.support.v7.widget.Toolbar
android:id="@+id/tl_head"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
4、Activity代码改为继承AppCompatActivity,注意早期的v7包是没有AppC