如何在DarkActionBar中使用轻型动作模式?

时间:2016-02-09 00:40:33

标签: android themes android-actionmode

这是我的主题。我正在使用DarkActionBar,因此标题,后退按钮和溢出图标是白色而不是黑色。

<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

但是,当选择文本时,ActionMode /上下文操作栏是“黑色”背景上的白色文本。

当我删除.DarkActionBar时,上下文操作栏会在浅灰色处切换为黑色,这对于此应用来说更令人满意。因此,如果我要走这条路线,我需要找到一种不同的方法让主操作栏使用白色前景。

如果在主ActionBar上还有一个明亮的前景,我如何在ActionMode /上下文操作栏上获得浅色背景/黑暗前景?

以下是丹尼尔在评论中提出的建议:

<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="actionModeStyle">@style/MyTheme.ActionMode</item>
    <item name="actionMenuTextColor">@android:color/black</item>
</style>

<style name="MyTheme.ActionMode" parent="Widget.AppCompat.ActionMode">
    <item name="background">@android:color/white</item>
    <item name="actionMenuTextColor">@android:color/black</item>
    <item name="android:titleTextStyle">@style/MyTheme.ActionMode.TitleText</item>
    <item name="android:subtitleTextStyle">@style/MyTheme.ActionMode.TitleText</item>
</style>

<style name="MyTheme.ActionMode.TitleText">
    <item name="android:textColor">@android:color/black</item>
</style>

不幸的是,我所能改变的只是背景。所有ActionMode文本和图标仍为白色。

我现在要使用<item name="background">@color/colorPrimary</item>。它比黑色背景更好。

似乎还有一种方法可以将前景改为黑色,这样我就可以使用Android典型的浅灰色背景。

1 个答案:

答案 0 :(得分:0)

我已经按照自己的方式解决了问题但非常简单:

可以为您的主题添加风格的每个图像的所有图形:

<resources>

    <!-- 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>

        <!-- Override the ActionMode Style -->
        <item name="actionModeStyle">@style/ActionMode</item>

        <item name="actionModeCloseDrawable">@drawable/ic_action_navigation_close</item>

        <!-- Styles inherited from the Base Theme -->
        <item name="android:actionModeCutDrawable">@drawable/ic_action_content_content_cut</item>
        <item name="android:actionModeCopyDrawable">@drawable/ic_action_content_content_copy</item>
        <item name="android:actionModePasteDrawable">@drawable/ic_action_content_content_paste</item>
        <item name="android:actionModeSelectAllDrawable">@drawable/ic_action_content_select_all</item>

    </style>
    <!-- Action Mode -->
    <style name="ActionMode" parent="Widget.AppCompat.ActionMode">
        <item name="background">@android:color/white</item>
        <item name="titleTextStyle">@style/TitleTextStyle</item>

    </style>

    <!-- Title text of Contextual action bar-->
    <style name="TitleTextStyle">
        <item name="android:textColor">@android:color/darker_gray</item>
        <item name="android:textSize">18sp</item>
    </style>

</resources>

幸运的是,Roman Nurik为我们提供了一个很好的工具来获取我们需要的所有资产:

http://romannurik.github.io/AndroidAssetStudio/icons-actionbar.html#source.space.trim=1&source.space.pad=0&name=ic_action_example&theme=light&color=33b5e5%2C60

只需使用剪贴画选项(搜索剪切,复制,过去,全选和关闭)

祝你好运,编码愉快!