ActionBarCompat支持库android:selectableItemBackground无效

时间:2013-08-02 17:25:59

标签: android android-actionbar android-actionbar-compat

我正在使用新的ActionBarCompat支持库 操作栏中的操作按钮在按下时应更改其背景,它适用于Android 4.3,但不适用于Gingerbread。 在姜饼中,如果按下按钮,它将不会改变背景。 我甚至改变了选择器:

<style name="Theme.MyCustomTheme" parent="@style/Theme.AppCompat.Light">
    <item name="selectableItemBackground">@drawable/actionbar_item_bg_selector</item>
</style>

它再次与Android 4.3合作,但不与Gingerbread合作。 这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

我弄清楚问题是什么。你应该复制android选择器并修改它。

<强> styles.xml

<style name="Theme.NewTransaction" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="selectableItemBackground">@drawable/actionbar_item_bg_selector</item>
</style>

<强> actionbar_item_bg_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_window_focused="false" android:drawable="@color/transparent" />

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
    <item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_disabled" />
    <item android:state_focused="true"  android:state_enabled="false"                              android:drawable="@drawable/list_selector_background_disabled" />
    <item android:state_focused="true"                                android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="false"                               android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="true"                                                             android:drawable="@drawable/list_selector_background_focused" />
    <item android:drawable="@color/transparent" />

</selector>

我认为我的问题与此评论有关:
即使这两个指向相同的资源,也有两个状态,因此drawable在退出压缩状态时会自动失效。