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:
- Measure () no funciona correctamente con diseños dinámicos y textView - Android
- Cómo mostrar el texto circular con TextView en Android
- Android: TextView: elimina el espaciado y el relleno en la parte superior e inferior
- TextView de anchura fija con compuesto estirable
- Ajuste automático de TextView para Android
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?
- Cómo hacer referencia a programación <string> en archivo xml en android
- SetTextcolor utilizando getCurrentTextColor ()
- La barra de acciones de Android TextView funciona de forma inconsistente
- Android TextView measureText para el árabe
- Cómo obtener marcas de acento en las letras de un TextView Android
- El niño especificado ya tiene un padre. Debe llamar a removeView () en el primer padre del niño (Android)
- Edittext - cómo ocultar underbar
- Android.content.res.Resources $ NotFoundException: String resource ID Excepción grave en Main
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.
- Android takePersistableUriPermission no compila
- ClassCastException: AbsListView $ LayoutParams no se puede convertir en Galería $ LayoutParams