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.

  • TextView y color de fondo
  • Visualización de un archivo MS Word en la vista (diga TextView) en Android
  • Android: crea TextView (o EditText) de forma programática y lo configura en un lugar específico de la pantalla dando coordenadas
  • Android interceptar la pasta \ copy \ cut en editText
  • Androide: elipsis en el texto ICS continúa después de la elipsis
  • Comportamiento impar: Tipo de clase del objeto devuelto por el método getText () de cambios TextView después de crear AccessibilityNodeInfo de TextView
  • Cómo reducir el espaciado de línea de TextView
  • Establecer una cadena spannable no funciona en una simple Textview
  • Cómo agregar borde a un texto en textview android
  • Cómo establecer el color del texto en una vista de texto mediante programación
  • Desplazamiento horizontal del texto en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.