actionBarItemBackground的选择器无法正常工作

时间:2014-02-24 11:37:25

标签: android-actionbar

我必须关注问题,我想从操作栏项目中更改选择器(只是正常的操作栏,既不支持操作栏也不支持actionbarsherlock)。如果按下项目图标,则背景颜色应为灰色而不是默认蓝色。我已经搜索了很多并且知道我需要在样式中覆盖属性android:actionBarItemBackground,但仍然我的选择器不起作用,背景颜色是透明的,但是在按下状态下的颜色不是灰色的,它保持透明。 :/

这是我的代码:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

     <!-- Customize your theme here. -->
     <item name="android:actionBarItemBackground">@drawable/action_bar_item_drawable</item>

</style>

这里是可绘制的

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="@android:integer/config_shortAnimTime">

    <item android:drawable="@android:color/transparent"/>
    <item android:drawable="@color/grey" android:state_pressed="true"/>
</selector>

有人有想法吗?

1 个答案:

答案 0 :(得分:0)

当您将选择器作为drawable提供时,将显示满足所有条件的第一个匹配项。

在您的drawable中,每次都会选择透明颜色,因为它没有任何条件,例如state_pressed="true"

您应首先将具有更多限制条件的项目和没有任何条件的项目作为最后一项。

你的drawable应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="@android:integer/config_shortAnimTime">

    <item android:drawable="@color/grey" android:state_pressed="true"/>
    <item android:drawable="@android:color/transparent"/>
</selector>