themedata studio programacion móviles libros gratis example desarrollo curso aplicaciones android

studio - programacion android pdf 2018



¿Puede un recurso de selección usar un color definido en un estilo? (3)

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 tu vista:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/selector_recyclerview_item_background"../>

Estoy tratando de usar un color definido en un estilo en un selector, pero está causando una excepción $ ResourcesFundFreeException.

Primero agregué un nuevo atributo a attr.xml:

<resources> <attr name="unread_background" format="color" /> </resources>

Luego definí ese valor attr en styles.xml:

<style name="ThemeNoTitleBar" parent="android:Theme.NoTitleBar"> <item name="unread_background">#000000</item> </style>

Luego traté de usar ese atributo en mi definición de 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 hacer que use el nuevo atributo, pero eso también falla.

Obviamente me estoy perdiendo algo, pero no estoy seguro de qué hacer para solucionarlo. Mi intención es crear múltiples temas y hacer que el selector use el color en el tema seleccionado actualmente.