AppCompat v22: Establecer el color de texto predeterminado para TextView

Quisiera fijar un textcolor del defecto en mi AppTheme, que debe ser negro (no el diseño del material del defecto gris oscuro). El textColor debe anularse estableciendo un estilo personalizado mediante el atributo android: textAppearance en un elemento UI (por ejemplo, TextView).

Esta es mi configuración actual:

Uso AppCompat-Library en mi proyecto:

compile 'com.android.support:appcompat-v7:22.2.0' 

Definí el siguiente tema:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> <item name="android:textColorPrimary">@color/black</item> <!-- All TextViews should have this color as default text color --> </style> 

Que se establece en el AndroidManifest.xml:

 <application android:name=".core.BaseApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> 

Además definí algunos estilos para cambiar el textAppearance de algunas TextViews:

 <style name="App.Heading" parent="android:TextAppearance.Widget.TextView"> <item name="android:textSize">16sp</item> <item name="android:textColor">@color/red</item> </style> <style name="App.Heading.Highlighted" parent="android:TextAppearance.Widget.TextView"> <item name="android:textSize">16sp</item> <item name="android:textColor">@color/blue</item> </style> 

Ahora tengo un xml-layout con algunas TextViews. Algunos de ellos deben tener el textAppearance predeterminado (de hecho un color de texto negro como se define como android: textColorPrimary en mi tema). Algunos deben aplicar una personalización personalizada de mis estilos definidos:

  <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="CUSTOM: App.Heading" android:textAppearance="@style/App.Heading" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="CUSTOM: App.Heading.Highlighted" android:textAppearance="@style/App.Heading.Highlighted" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Normal Textview with no style"/> 

Los dos primeros TextView aplican mi textAppearance definido, que está bien. Pero el último TextView tiene un textcolor gris oscuro (diseño de material predeterminado?) Y no un negro. Si establezco el atributo:

 <item name="android:textColor">@color/black</item> 

En mi AppTheme, todos los TextViews tienen un color de texto negro. El color de texto definido en mis estilos (por ejemplo, App.Heading) ya no se reconoce.

Así que mi pregunta es: ¿Cómo puedo establecer un textColor por defecto para mi TextViews, que podría ser anulado por la configuración de un textAppearance?

No es fácil encontrar el camino porque hay tres atributos android:textColor , textColorPrimary textColorSecondary y textColorTertiary, y una gran cantidad de atributos para los estilos de base android:textAppearance como medio pequeño etc (ahora obsoleto?).

De todos modos, acerca de TextView sin estilo, parece que se refiere como predeterminado para el atributo android:textAppearanceSmall estilo de que el valor es el estilo TextAppearance.AppCompat.Small que reemplaza a través de Base.TextAppearance.AppCompat.Small el atributo android:textColor con ?android:attr/textColorTertiary Valor ?android:attr/textColorTertiary .

A continuación, la sustitución <item name="android:textColorTertiary">@color/black</item> will work.

Si recuerdo bien, no puedes establecer el color del texto usando el textAppearance. Es necesario utilizar un estilo o un tema para lograrlo.

Por favor, defina el siguiente código en los archivos de style.xml que están disponibles en la carpeta v11, v14 y v21.

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:textColor">@android:color/red</item> </style> 

Y utilice este estilo para cada textview.

  • ¿Cómo se centra un texto en el diseño?
  • Android ExpandableListView con vínculos que se pueden hacer clic en TextView hijo no se expandirá al tocar TextView
  • Desplazamiento de TextView en una ScrollView a una subcadena de texto específica
  • Mostrar el menú contextual cuando se pulsa el enlace por largo tiempo en TextView
  • Extra padding en TextView con contenido HTML
  • TextView negrita a través de un archivo xml?
  • ¿Por qué TextView.setTypeface () aumenta exageradamente mi altura TextView cuando uso la fuente Roboto-Italic.ttf?
  • ¿Diferencia entre addOnGlobalLayoutListener y onWindowFocusChanged?
  • Desplazamiento horizontal del texto en Android
  • Estilo conjunto de Android en el código
  • Ver contenido a continuación ExpandableListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.