ActionBarCompat support library android:selectableItemBackground not working

自古美人都是妖i 提交于 2019-12-10 19:56:14

问题


I'm using the new ActionBarCompat support library.
The action buttons in the actionbar should change their background when pressed, It works with Android 4.3 but not with Gingerbread. In Gingerbread if I press on a button it will not change the background. I even changed the selector:

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

And again it is working with Android 4.3 but not with Gingerbread. Is this a bug ?


回答1:


I figured out what was the problem. You should copy the android selector and modify it.

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>

I think my problem was related to this comment:
Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state.



来源:https://stackoverflow.com/questions/18022778/actionbarcompat-support-library-androidselectableitembackground-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!