设置操作栏图标高度以匹配操作栏高度

时间:2014-04-20 05:23:35

标签: android android-actionbar

在此处查看问题,灰色复选框从操作栏的顶部和底部留出空间: small actionbar icon

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="CustomActionBarTheme" parent="Theme.Base.AppCompat.Light">
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
</style>

<!--<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">-->
<style name="ActionButtonStyle" >
    <item name="android:height">@dimen/abc_action_bar_default_height</item>
    <item name="android:layout_height">@dimen/abc_action_bar_default_height</item>
</style>

我像这样设置项目:

getMenuInflater().inflate(R.menu.submit_action, menu);

submit_action看起来像:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_submit"
        android:icon="@drawable/check"
        app:showAsAction="always"  />
</menu>

最后,附件是正在使用的@ drawable / check。

enter image description here

任何想法如何让支票填满操作栏?

2 个答案:

答案 0 :(得分:4)

您的图标未填充ActionBar的原因是ActionMenuItemView测量图标的方式。

ActionMenuItemViewmaximum size of 32dp

时调用sets the bounds for your icon

因此,它使图像的大小有所不同,系统将始终调整它的大小。

  

任何想法如何让支票填满操作栏?

您应该使用MenuItem的操作布局,没有背景的复选标记图标,并根据需要更改操作布局父级的背景颜色。这是一个例子:

<强>布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/actionButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#e8e8e8"
    android:clickable="true"
    android:contentDescription="@string/cd" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@null"
        android:scaleType="centerInside"
        android:src="@drawable/ic_action_tick" />

</RelativeLayout>

<强>菜单项

<item
    android:id="@+id/action_submit"
    android:actionLayout="@layout/your_action_layout"
    android:showAsAction="always"/>

<强>辅助

确保您的MenuItem可访问非常重要。通常情况下,当您长按ActionBar中的项目时,短Toast会显示内容说明,但是当您使用自定义MenuItem时,它会显示你要实现这种模式。一种简单的方法是使用Roman Nurik's CheatSheet。如果您不确定如何使用它,请参阅my answer here,其中详细介绍了如何创建自定义MenuItem布局。

<强>替代地

如果要为每个MenuItem使用该背景颜色,可以创建自定义样式并使用android:actionButtonStyle属性应用它。这是一个例子:

您的风格

<style name="Your.ActionButton" parent="@android:style/Widget.Holo.Light.ActionButton">
    <item name="android:background">#e8e8e8</item>
</style>

您的主题

<style name="Your.Theme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionButtonStyle">@style/Your.ActionButton</item>
</style>

<强>结果

Example

答案 1 :(得分:-1)

以下是我在Android中使用图标的方法,以确保大小正确。您有一个res / drawable-文件夹的现有项目。您必须将正确的Icon放入正确的文件夹中。

启动新项目向导,当您到达要在现有项目中使用的图标中的启动器图标时。完成向导。该向导将为您制作各种尺寸的图标。然后我手动将res / drawable-xdpi res / drawable-ldpi等中的图标复制到现有项目的相应文件夹中。删除不再需要的新项目。