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.
Botón de Android con diferentes colores de fondo. Eche un vistazo al ejemplo. Parece que necesitas eso.
<item android:state_selected="false"
android:drawable="?unread_background" />
Esta sección de arriba es incorrecta.
los dibujables solo toman una referencia a un recurso dibujable. Por favor vea este enlace. http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList