改變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)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章