Android Studio环境下ActionBar的使用教程以及如何解决遇到的问题

 
声明:
关于ActionBar的使用教程,强烈推荐阁下参考 郭霖大神的两篇博客
Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
这两篇博文几乎涵盖了ActionBar 90%的使用用法.

顺便说一下,郭神的博客是基于eclipse环境开发的,如果您现在使用的是eclipse(这都21世纪了,估计用eclipse的很少,eclipse目前仅有的一点优势可能体现在jni开发上了)的话,参照上述两篇博客学习应该没什么问题.我用的开发环境是as,因此我下面要说的问题,应该是使用 as开发的用户才有可能遇到的问题.

最终实现效果:
效果图
按照郭神博客,该有的效果都实现了.
 
但是在AS环境下的实现过程中遇到了两个问题.由于网上资料很少,特此记录下.
1.ActionBar返回箭头和logo图标间距过大
2.ActionBar中的action按钮只显示在overflow(最右边3个点)里

先看问题效果图:
这里写图片描述

能忍么?我不能忍.上网找答案,大部分给的答案都是ToolBar的解决方案.google官方推荐使用ToolBar来代替ActionBar,ActionBar能实现的效果ToolBar都能实现.如果是ToolBar中出现这种问题,只需要在toolbar.xml布局文件中添加

app:contentInsetStartWithNavigation="0dp"

即可.但是要知道ActionBar可不存在所谓的布局文件(当然了,这里不包括自定义ActionBar样式)

造成这种问题的原因:
AS中的活动默认继承了AppcompatActivity,而Eclipse中默认继承了Activity.至于AppcompatActivity和Activity的区别,可参考Android中Activity和AppcompatActivity的区别,这里不在赘述. Activity的继承的父类不同,主题和引用的方式也不同,因此只需将as中的继承的父类改为Activity即可

更改前:
AppcompatActivity:   android:theme="@style/AppTheme">

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="contentInsetStart">0dp</item>
        <item name="contentInsetStartWithNavigation">0dp</item>

    </style>

 
Activity:

android:theme="@android:style/Theme.Holo.Light.DarkActionBar">
<!--todo @android:style/Theme.Holo.Light范围更广-->
    <style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light">

        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <!--todo 改变tab的字体颜色-->
        <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
        <!--todo 改变tab指示线的颜色-->
        <item name="android:actionBarTabStyle">@style/MyActionBarTabs</item>
    </style>

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <!--todo 调整actionbar的背景色-->
        <item name="android:background">#f4842d</item>

        <!--todo 调整actionbar tab的背景色-->
        <item name="android:backgroundStacked">#d27026</item>

        <!--todo 改变actionbar的字体(图标旁边的,不是tab中的字体)的颜色-->
        <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>

    </style>

    <style name="MyActionBarTitleText" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="android:textColor">#fff</item>
    </style>

    <style name="MyActionBarTabText"
        parent="@android:style/Widget.Holo.ActionBar.TabText">
        <item name="android:textColor">#fff</item>
    </style>

    <style name="MyActionBarTabs" parent="@android:style/Widget.Holo.ActionBar.TabView">
        <item name="android:background">@drawable/actionbar_tab_indicator</item>
    </style>

更改后的style.xml文件中对于ActionBar中的标题颜色, ActionBar背景色, 以及tab背景色, 还有指示器的样式的实现都做了详细注释,相信只要你看了郭神的上述两篇博文,自然会明白的.

 
改变引用主题之后,最关键的是导包,需要原来的v7包换成v4包.
直接上图吧
这里写图片描述
至此,完结,如有疑问请留言.

附上ActionBar的测试Demo,如有需要请移步下载.
https://download.csdn.net/download/zhangqunshuai/10467672

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值