改变ActionBar右侧三个小点的颜色

先介绍一下背景,使用的是Support v7 21+的兼容库来实现 material style

Theme

  <style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
        <!-- Actionbar color -->
        <item name="colorPrimary">@color/android_blue</item>
        <!--Status bar color-->
        <item name="colorPrimaryDark">@color/android_blue</item>

        <item name="android:windowContentOverlay">@null</item>
        <item name="android:scrollbarThumbVertical">@drawable/scrollbar_handle_holo_light</item>
        <item name="android:windowAnimationStyle">@style/ActivityAnimationStyle</item>
        <item name="android:textColor">@color/black</item>

        <item name="colorAccent">@color/android_blue</item>
        <item name="android:textColorPrimary">@color/black</item>
    </style>


可是出现的效果是



三个黑色的小点和背景还有前面的文字格格不入,那么怎么解决这个问题尼?搜索了一些解决方案比如

<style name="MyCustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
    <item name="actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>

<style name="MyCustomTheme.OverFlow">
    <item name="android:src">@drawable/my_overflow_image</item>
</style>
但是没有效果,突然想起来一个开源项目Sky31Radio,有遇到同样的场景,果然找到了解决方案,问题的关键在于使用了ToolBar来代替Actionbar,那么menu和overflow的样式应该在Toolbar上定义。

下面是解决方案:

actionBar右上角如果是文本的menu,如果想要自定义样式需要在Toolbar中自定义style

 app:theme="@style/AppTheme.ActionBar"

然后在style.xml中

<style name="AppTheme.ActionBar" parent="<span style="color:#ff0000;">@style/ThemeOverlay.AppCompat.Dark.ActionBar</span>">
        <item name="actionMenuTextColor">#fff</item>
        <item name="actionMenuTextAppearance">@style/AppTheme.actionMenuTextSize</item>
    </style>

    <style name="AppTheme.actionMenuTextSize" parent="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu">
        <item name="android:textSize">18sp</item>
        <item name="android:textStyle">normal</item>
    </style>


AppTheme.ActionBar的继承很重要,之前绕弯一直是没有找到正确的parent,使用darkActionBar,很显然,内部的图标和文字都是白色的,上面的灰色点问题就解决了,然后文本的大小可以使用actionMenuTextAppearance属性自定义,文本加粗改成normal,这样就搞定了预计的效果







相关资料:

How To Create A Material Style Action Bar On KitKat And Older Android Versions

Android应用开发中的风格和主题(style,themes)


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值