Cómo utilizar textColorPrimary como color de fondo en un estilo?

Quiero crear un estilo que utilice el androide textColorPrimary como color de fondo. He intentado lo siguiente que no funciona, el resultado es mi diseño no se muestra en absoluto.

 <style name="horizontalLine"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">1dp</item> <item name="android:background">?android:attr/textColorPrimary</item> </style> 

¿Cómo utilizo textColorPrimary como color de fondo en un estilo?

Esta sintaxis parece funcionar para mí, al intentar utilizar atributos:

 <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="?android:textColorPrimary" android:text="Hello"/> 

(o)

 <style name="MyStyle"> <item name="android:textColor">?android:textColorPrimary</item> </style> 

Puedo cambiar el tema de la aplicación de Holo a Holo.Light y el color del texto cambiará automáticamente para caber.

No funciona cuando lo configuro como un fondo de una vista sin embargo – Android se bloqueará quejándose de que el dibujable referenciado es una lista de estado que no especifica drawables (es una lista de estado de los colores ).

  Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: <item> tag requires a 'drawable' attribute or child tag defining a drawable at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:178) at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:885) at android.graphics.drawable.Drawable.createFromXml(Drawable.java:822) at android.content.res.Resources.loadDrawable(Resources.java:1950) ... 39 more 

Estoy utilizando HoloEverywhere que me permite hacer referencia a los recursos directamente, pero usted debe obtener un problema similar en el caso nativo. No creo que el color primario, no seleccionado, no activado (etc) utilizado como un componente en la lista de estado xml se expone a través de un atributo.

En cualquier caso, el color del texto utilizado depende del tema que usted, el desarrollador de la aplicación, elija. Si elige utilizar el tema de Holo (oscuro) entonces su texto será de color claro, y el usuario no podrá afectar esto. No es necesario que el color de la línea sea dinámico para la aplicación.

El mensaje de error que obtengo para esto es:

 org.xmlpull.v1.XmlPullParserException: Binary XML file line #18: <item> tag requires a 'drawable' attribute or child tag defining a drawable 

Haciendo un poco de excavación, las especificaciones dicen que el atributo de background debe soportar un color o una referencia a un recurso extraíble:

… Mirando el recurso que usted está referenciando, es un StateListDrawable .

 platforms/android-17/data/res/color/primary_text_dark.xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:color="@android:color/bright_foreground_dark_disabled"/> <item android:state_window_focused="false" android:color="@android:color/bright_foreground_dark"/> <item android:state_pressed="true" android:color="@android:color/bright_foreground_dark_inverse"/> <item android:state_selected="true" android:color="@android:color/bright_foreground_dark_inverse"/> <item android:state_activated="true" android:color="@android:color/bright_foreground_dark_inverse"/> <item android:color="@android:color/bright_foreground_dark"/> <!-- not selected --> </selector> 

Sin embargo, los documentos para StateListDrawable también dicen explícitamente que el atributo drawable debe definirse para los item elemento:

 https://developer.android.com/guide/topics/resources/drawable-resource.html <item> Defines a drawable to use during certain states, as described by its attributes. Must be a child of a <selector> element. attributes: android:drawable Drawable resource. Required. Reference to a drawable resource. 

… que no es el caso para primary_text_dark.xml . Por lo tanto, no está funcionando porque el dibujable que está haciendo referencia no parece ajustarse a la especificación.

Creo que la solución es hacer referencia al color que se utiliza en primary_text_dark para el estado predeterminado: bright_foreground_dark . Viendo que esto no es público, necesitas ir directamente al que hace referencia, que es:

 android:background="@android:color/background_light" 

Considero que desea utilizar el color de texto principal nativo de Android.

 <item name="android:background">@android:color/primary_text_dark</item> 
  • Android: AlertDialog Button no acepta el estilo
  • Estilos de herencia múltiple
  • ¿Por qué mis estados de botones personalizados no funcionan?
  • Cambio de tema de diálogo para cada cuadro de diálogo
  • error: Error: No se encontró ningún recurso que coincida con el nombre dado: attr 'buttonBarButtonStyle'
  • Android: ¿Cómo puedo configurar el AlertDialog de ancho y altura, y el botón del estilo AlertDialog?
  • Cambiar dibujable basado en tema
  • ¿Cómo aplicar dos estilos diferentes a un elemento en android?
  • Cómo hacer un Relativelayout clickable?
  • Cómo cambiar el cuadro de diálogo de alerta divider color android
  • Android: Estilo de preferencia
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.