¿Puede un recurso selector utilizar un color definido en un estilo?
Estoy intentando utilizar un color definido en un stlyle en un selector pero está causando un Resources $ NotFoundException.
Primero agregué un nuevo atributo a attr.xml:
<resources> <attr name="unread_background" format="color" /> </resources>
Entonces definí ese valor attr en styles.xml:
<style name="ThemeNoTitleBar" parent="android:Theme.NoTitleBar"> <item name="unread_background">#000000</item> </style>
Entonces intenté usar ese attr en mi definición del selector:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- other states snipped --> <item android:state_selected="false" android:drawable="?unread_background" /> </selector>
Por último, la actividad utiliza el tema de estilo ThemeNoTitleBar en el manifiesto.
También he intentado crear un color en colors.xml y tenerlo usar el nuevo attr pero también falla.
Estoy obviamente perdiendo algo, pero no estoy seguro de qué hacer para solucionarlo. Mi intención es crear múltiples temas y hacer que el selector utilice el color en el tema seleccionado actualmente.
<item android:state_selected="false" android:drawable="?unread_background" />
Esta sección anterior es incorrecta.
El dibujable sólo toma una referencia a un recurso extraíble. Por favor vea este enlace. http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
Botón de Android con diferentes colores de fondo Echa un vistazo al ejemplo. Parece que necesitas eso.
Aquí hay algo, que funciona por mí.
Attrs.xml:
<attr name="color_selection" format="reference"/>
Styles.xml, como hijo del tema principal:
<item name="color_selection">@color/selection_background_inverse</item>
Shape_background_selected.xml en la carpeta dibujable:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="?attr/color_selection"/> </shape>
Su archivo selector, en mi caso: selector_background_recyclerview:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/shape_background_selected" android:state_activated="true" /> <item android:drawable="@drawable/shape_background_selected" android:state_pressed="true" /> <!-- pressed --> <item android:drawable="@color/transparent" /> <!-- default --> </selector>
Finalmente, en el xml de su vista:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/selector_recyclerview_item_background"../>