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

tip*_*ipu 6 android android-actionbar

看到这里的问题,灰色复选框从操作栏的顶部和底部留下空间: 小动作栏图标

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>
Run Code Online (Sandbox Code Playgroud)

我这样设置项目:

getMenuInflater().inflate(R.menu.submit_action, menu);
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

最后,附件是使用的@ drawable/check.

在此输入图像描述

任何想法我怎么能得到支票填补行动栏?

adn*_*eal 5

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

ActionMenuItemView调用的最大尺寸32dp时,设置范围为你的图标

因此,您的图像有多大差异很大,系统将始终调整其大小。

知道如何让支票填满操作栏吗?

你应该为你的 使用一个动作布局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>
Run Code Online (Sandbox Code Playgroud)

菜单项

<item
    android:id="@+id/action_submit"
    android:actionLayout="@layout/your_action_layout"
    android:showAsAction="always"/>
Run Code Online (Sandbox Code Playgroud)

无障碍

确保您MenuItem可以访问很重要。通常,当您长按ActionBar短中的某个项目时,Toast会为您显示内容描述,但是当您使用自定义时,则由MenuItem您来实现此模式。一个简单的方法是使用Roman Nurik 的 CheatSheet。如果您不确定如何使用它,您应该参考我在此处的回答,其中详细介绍了有关创建自定义MenuItem布局的内容。

或者

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

你的风格

<style name="Your.ActionButton" parent="@android:style/Widget.Holo.Light.ActionButton">
    <item name="android:background">#e8e8e8</item>
</style>
Run Code Online (Sandbox Code Playgroud)

你的主题

<style name="Your.Theme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionButtonStyle">@style/Your.ActionButton</item>
</style>
Run Code Online (Sandbox Code Playgroud)

结果

例子