Библиотека поддержки ActionBarCompat android: selectableItemBackground не работает

Я использую новую библиотеку поддержки ActionBarCompat.
Кнопки действий на панели действий должны менять свой фон при нажатии. Это работает с Android 4.3, но не с Gingerbread. В Gingerbread, если я нажму кнопку, фон не изменится. Я даже изменил селектор:

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

И снова он работает с Android 4.3, но не с Gingerbread. Это ошибка?


person vovahost    schedule 02.08.2013    source источник


Ответы (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>

Я думаю, что моя проблема была связана с этим комментарием:
Несмотря на то, что эти два указывают на один и тот же ресурс, имеют два состояния, поэтому рисуемый объект аннулирует себя при выходе из нажатого состояния.

person vovahost    schedule 03.08.2013