theme temas style studio para for descargar color android

temas - El selector de color de Android no funciona con atributos personalizados



style for android (3)

Tengo en attrs.xml

<resources> <!-- theme specific colors --> <attr format="reference|color" name="foreground" /> <attr format="reference|color" name="background" /> </resources>

Y luego en theme.xml

<style name="MyTheme" parent="android:Theme.Black"> <item name="android:windowNoTitle">true</item> <item name="foreground">#0000FF</item> <item name="background">#00FF00</item> </style>

También creé el selector de color llamado forground_to_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="?background"/> <!-- pressed --> <item android:state_focused="true" android:color="?background"/> <!-- focused --> <item android:color="?foreground"/> <!-- default --> </selector>

Ahora me gustaría usarlo todos juntos en TextView:

<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/forground_to_background" />

Desafortunadamente no funciona. En lugar de tener bonitos colores azul verdoso, solo tengo un color: rojo. TextView siempre es rojo. Cuando cambie TextView para usar el color "? Foreground" cambiará. También cuando cambio el selector de colores de "? Xxxx" al valor codificado como "# 00f", el color comienza a funcionar.

¿Dónde está el problema? ¿Qué estoy haciendo mal?

Edición: creo que es un duplicado de problema / error ¿Puede un recurso de selección usar un color definido en un estilo?

Edit2: Además, cuando intento usar este TextView en la aplicación ListView se bloquea. No puede analizar XML.


¿Está seguro si está aplicando MyTheme a la actividad o la vista de texto? Otra cosa que puedes intentar es que en lugar de usar el "?" en su forground_to_background.xml, intente usar "@" en su lugar. ver si eso soluciona tu problema


La razón por la que esto sucede es que tengo un contexto diferente. Mientras se infla, Context es consciente de mis atributos de tema, pero al adaptador ListView pasé ApplicationContext que no conocía esos atributos. Ahora no sé por qué no sabe de ellos;)


No puede hacer referencia a? Attr / al elegir colores para un selector. Lo que puede hacer, si quiere colores por tema en su selector, es crear múltiples selectores que hagan referencia a @ color / y @ drawable /, y luego tengan un atributo de "referencia" que asocie uno de los selectores con el estilo dado.

<attr name="forground_to_background" format="reference" />

Luego tienes que configurar el color del texto como

android:textColor="?attr/forground_to_background"

Creo que el texto siempre fue rojo porque Android interpretaba el valor entero del attr como un color (rojo), en lugar de usarlo como una búsqueda de lo que realmente quería.