自定义溢出图标太大(使用android.support.v7和AppCompat)
我的目标是让动作栏变成红色,但由于默认android库中我唯一的选项是白色和黑色,所以我尝试对其进行定制。我在gimp上使用一个油漆桶来填充白色图标,然后用另一个名称重新保存,从而定制了一些红色图标。我对溢出图标也做了同样的事情,但出于某种原因,它呈现的比我的其他图标大很多,这是我不想要的 我正在使用android:minSdkVersion=“15”和自定义溢出图标太大(使用android.support.v7和AppCompat),android,android-actionbar,android-resources,android-styles,android-icons,Android,Android Actionbar,Android Resources,Android Styles,Android Icons,我的目标是让动作栏变成红色,但由于默认android库中我唯一的选项是白色和黑色,所以我尝试对其进行定制。我在gimp上使用一个油漆桶来填充白色图标,然后用另一个名称重新保存,从而定制了一些红色图标。我对溢出图标也做了同样的事情,但出于某种原因,它呈现的比我的其他图标大很多,这是我不想要的 我正在使用android:minSdkVersion=“15”和targetSdkVersion 21以及支持库(特别是android.support.v7)。我的活动扩展了android.support.v
targetSdkVersion 21
以及支持库(特别是android.support.v7
)。我的活动扩展了android.support.v7.app.ActionBarActivity,并包含一个填充整个活动的片段。但我的溢出图标比其他图标大,但我希望它们的大小相同:
我知道它选择了正确的图标,因为它们都是蓝色的。它必须以不同的方式调整大小,但我不知道为什么?我实际上在可绘制hdpi
,可绘制mdpi
,可绘制xhdpi
,可绘制xxhdpi
和可绘制xxxhdpi
中有5个不同颜色的放大图标,这样我就可以看到问题是否是使用了错误的图标
当我使用@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse
父主题附带的默认图标时,大小看起来都一样:
使用“更垂直”图标进行实验:
<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>
使用可绘制xxhdpi的大小如下所示:
我测试了一个较小的图标(drawable mdpi
size),将其放入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>
@样式/NGT48ActionBar
@颜色/白色
@样式/NGT48ActionBar
@style/NGT48Theme.OverFlow
@style/NGT48Theme.OverFlow
@颜色/白色
@颜色/白色
@样式/NGT48ActionBarTitleTextStyle
@样式/NGT48ActionBarTitleTextStyle
@颜色/红色\u NGT48
@可绘图/ic放大红色48dp
编辑:以下是伊万回答的结果。我下载了24dp版本的图标,更改了颜色,测试了它,它成功了!:) 更多的[aka action overflow]图标被称为a,根据规范,大小应为
24dp
(与a的通常48dp
)
因此,对于xxhdpi
,您的图标大小应该是72px
。也可以检出原始材质图标。对于appcompat
,它的位置是。/appcompat-v7/[version]/res/drawable xxhdpi/abc\u ic\u menu\u moreoverflow\u mtrl\u alpha.png
PS
实际上,如果您只需要更改“更多”按钮的颜色(以及我从屏幕截图中看到的文本),另一个选项就是只使用着色来为项目着色。Appcompat支持工具栏中的所有小部件使用它,股票图标不着色且启用alpha,以允许着色
使用图标的stock drawable(即不要覆盖)和add(我可能对此有点生疏)
//文本颜色
@颜色/红色
//图标颜色
@颜色/红色
你可以在res目录中创建一个图像资源,只需选择;图标类型:(操作栏和选项卡图标)和资产类型:(图像),添加图像,即可完成。添加新的可绘制资源您如何证明图标大小不正确?@CoasmKey因为它太大,您可能会调整图标的所有大小directories@CoasMckey它不起作用您的
xxhdpi
图标的分辨率是多少?非常感谢!!我试过了,现在确实有效了!我在我原来的帖子里放了一张图片来展示结果。@RockLee没问题,伙计:)@RockLee还有,检查答案的PS部分,我认为有一种更简单的方法来实现你的目标。