Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义溢出图标太大(使用android.support.v7和AppCompat)_Android_Android Actionbar_Android Resources_Android Styles_Android Icons - Fatal编程技术网

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

自定义溢出图标太大(使用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

我的目标是让动作栏变成红色,但由于默认android库中我唯一的选项是白色和黑色,所以我尝试对其进行定制。我在gimp上使用一个油漆桶来填充白色图标,然后用另一个名称重新保存,从而定制了一些红色图标。我对溢出图标也做了同样的事情,但出于某种原因,它呈现的比我的其他图标大很多,这是我不想要的

我正在使用android:minSdkVersion=“15”和
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部分,我认为有一种更简单的方法来实现你的目标。