自定义溢出图标太大(使用 android.support.v7 和 AppCompat)

Roc*_*Lee 3 android android-icons android-actionbar android-resources android-styles

我的目标是将操作栏设为红色,但由于默认 android 库中的唯一选项是白色和黑色,因此我尝试对其进行自定义。我通过在 gimp 上使用油漆桶制作了一些自定义的红色图标来填充白色图标并以不同的名称重新保存。我对溢出图标做了同样的事情,但由于某种原因,它渲染得比我不想要的其他图标大得多。

我正在使用android:minSdkVersion="15"targetSdkVersion 21和支持库(特别是,android.support.v7)。我的活动扩展android.support.v7.app.ActionBarActivity并包含一个填充整个活动的片段。但是我的溢出图标比其他图标大,但我希望它们的大小相同:

在此处输入图片说明

我知道它选择了正确的图标,因为它们都是蓝色的。它必须以不同的方式调整大小,但我不知道为什么?其实,我有5个不同颜色放大的图标drawable-hdpidrawable-mdpidrawable-xhdpidrawable-xxhdpi,和drawable-xxxhdpi,只是让我可以看到,如果问题是正在使用错误的图标。

当我使用@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse父主题附带的默认图标时,大小看起来都一样:

在此处输入图片说明

使用“更垂直”图标进行实验:

使用drawable-xxhdpi大小如下所示:

在此处输入图片说明

drawable-mdpi通过放入drawable并强制使用它来测试一个较小的图标(大小)(即使我的 android 使用 drawable-xxhdpi 图标),但它最终还是被放大到了一个大尺寸:

在此处输入图片说明

这是我使用的自定义主题代码:

<style name="NGT48Theme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/NGT48ActionBar</item>
        <item name="android:windowBackground">@color/white</item>
        <item name="actionBarStyle">@style/NGT48ActionBar</item>
        <item name="android:actionOverflowButtonStyle">@style/NGT48Theme.OverFlow</item>
        <item name="actionOverflowButtonStyle">@style/NGT48Theme.OverFlow</item>
    </style>

<!-- ~~~~~~~~~~~~~~~~~~~~  ActionBar styles ~~~~~~~~~~~~~~~~~~~~ -->
<style name="NGT48ActionBar"
       parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/white</item>
    <item name="background">@color/white</item>
    <item name="android:titleTextStyle">@style/NGT48ActionBarTitleTextStyle</item>
    <item name="titleTextStyle">@style/NGT48ActionBarTitleTextStyle</item>
</style>

<!-- ~~~~~~~~~~~~~~~~~~~ ActionBar Title Text Styles ~~~~~~~~~~~~~~~ -->
    <style name="NGT48ActionBarTitleTextStyle"
           parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
           >
        <item name="android:textColor">@color/red_NGT48</item>
    </style>


    <!-- ~~~~~~~~~~~~~~~~~~~ Overflow Icon Styles ~~~~~~~~~~~~~~~ -->
    <style name="NGT48Theme.OverFlow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_zoom_in_red_48dp</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

编辑:这是伊万回答的结果。我下载了 24dp 版本的图标,改变了颜色,测试了它,它奏效了!:)

在此处输入图片说明

Iva*_*sov 5

更多[又名行动溢出]图标是什么叫做系统图标,在谷歌的设计规范,并根据规格,大小应24dp(而不是通常的48dp一个的产品图标

因此,对于xxhdpi您的图标大小应该是72px. 您还可以查看原始材料图标。对于appcompat,它的位置是../appcompat-v7/[version]/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_mtrl_alpha.png

PS 实际上,如果您只需要更改更多按钮(和文本,正如我从屏幕截图中看到的)的颜色,另一种选择是仅使用着色来为项目着色。Appcompat 支持工具栏中的所有小部件,股票图标未着色且启用 alpha,以允许着色。

使用图标的股票可绘制(即不要覆盖)并添加(我可能对此有点生疏)

// Text color
<item name="android:textColorPrimary">@color/red</item>
// Icon color
<item name="android:textColorSecondary">@color/red</item>
Run Code Online (Sandbox Code Playgroud)

到您的操作栏主题。