Cómo cambiar el color de texto predeterminado mediante un tema personalizado?

Lo que estoy intentando debería ser bastante fácil con los temas, pero no puedo averiguar cómo: Quiero que todo el texto sea blanco de forma predeterminada en mi aplicación. He creado un tema personalizado en theme.xml:

<style name="Theme" parent="@android:Theme"> </style> <style name="TextAppearance.Theme" parent="@android:TextAppearance.Theme"> <item name="android:textColor">#ffffffff</item> </style> 

Y configurarlo para toda la aplicación:

 <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/Theme"> 

Pero las etiquetas son todavía negras. ¿Qué falta?

PS: ¿Cómo puedo definir estilos para diferentes tamaños de texto, que se aplicarán por widget? ¿Es correcto algo así?

 <style name="Theme.smallText"> <item name="android:textSize">12dp</item> </style> 

actualizar

Tomé en mirar themes.xml en Android SDK, muestra cómo configurar el estilo de texto de un tema:

 <item name="textAppearance">@android:style/TextAppearance</item> 

En mi caso, debería funcionar con esta definición:

 <style name="Theme" parent="@android:Theme"> <item name="android:textAppearance">@style/MyText</item> </style> <style name="MyText" parent="@android:style/TextAppearance"> <item name="android:textColor">#ffffffff</item> </style> 

Sin embargo, todavía no funcionaba.

Acabo de encontrar otra publicación para el mismo problema: http://groups.google.com/group/android-developers/browse_thread/thread/2897ccd0884546b9

4 Solutions collect form web for “Cómo cambiar el color de texto predeterminado mediante un tema personalizado?”

En su Manifest necesita hacer referencia al nombre del style que tiene el item color de texto dentro de él. En este momento sólo está haciendo referencia a un style vacío. Así que en su theme.xml haga sólo este style :

 <style name="Theme" parent="@android:style/TextAppearance"> <item name="android:textColor">#ffffffff</item> </style> 

Y mantén tu referencia en el Manifest igual ( android:theme="@style/Theme" )

EDIT :

Theme.xml:

 <style name="MyTheme" parent="@android:style/TextAppearance"> <item name="android:textColor">#ffffffff</item> <item name="android:textSize">12dp</item> </style> 

Manifiesto:

 <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/MyTheme"> 

Nota Combino el color y el tamaño del texto en el mismo style . Además, cambié el nombre del tema a MyTheme y ahora estoy haciendo referencia a eso en el Manifest . Y cambié a @android:style/TextAppearance para el valor parent .

Al crear una aplicación, se creará un archivo denominado styles.xml en la carpeta res / values. Si usted cambia los estilos, usted puede cambiar el fondo, color de texto, etc para todas sus disposiciones. De esa manera usted no tiene que ir en cada diseño individual y cambiar el manualmente.

Styles.xml:

 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.AppBaseTheme" parent="@android:style/Theme.Light"> <item name="android:editTextColor">#295055</item> <item name="android:textColorPrimary">#295055</item> <item name="android:textColorSecondary">#295055</item> <item name="android:textColorTertiary">#295055</item> <item name="android:textColorPrimaryInverse">#295055</item> <item name="android:textColorSecondaryInverse">#295055</item> <item name="android:textColorTertiaryInverse">#295055</item> <item name="android:windowBackground">@drawable/custom_background</item> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style> 

parent="@android:style/Theme.Light" es los colores nativos de Google. Aquí hay una referencia de lo que son los estilos nativos: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml

El estilo predeterminado de Android también se denomina "Tema". Así que llamándolo Tema probablemente confundió el programa.

name="Theme.AppBaseTheme" significa que estás creando un estilo que hereda todos los estilos de parent="@android:style/Theme.Light" . Esta parte se puede ignorar a menos que quiera heredar de AppBaseTheme de nuevo. = <style name="AppTheme" parent="AppBaseTheme">

@ Drawable / custom_background es una imagen personalizada que pongo en la carpeta de drawable. Es una imagen 300×300 png.

# 295055 es un color azul oscuro.

Mi código cambia el color de fondo y de texto. Para el texto del botón, por favor, mirar a través de stlyes nativo de Google (el enlace que dio u arriba).

Luego en Android Manifest, recuerde incluir el código:

 <application android:theme="@style/Theme.AppBaseTheme"> 

No puedes usar @android:style/TextAppearance como el padre del tema de toda la aplicación; Por eso la solución de koopaking3 parece bastante rota.

Para cambiar el color de texto predeterminado en cualquier parte de la aplicación mediante un tema personalizado, prueba algo como esto. Funciona al menos en Android 4.0+ (API nivel 14+).

res/values/themes.xml :

 <resources> <style name="MyAppTheme" parent="android:Theme.Holo.Light"> <!-- Change default text colour from dark grey to black --> <item name="android:textColor">@android:color/black</item> </style> </resources> 

Manifiesto:

 <application ... android:theme="@style/MyAppTheme"> 

Actualizar

Un defecto con lo anterior es que también los elementos de menú Desbordamiento de barra de acciones deshabilitados usan el color predeterminado, en lugar de estar en gris. (Por supuesto, si no usa elementos de menú deshabilitados en cualquier parte de su aplicación, esto puede no importar.)

Como aprendí al hacer esta pregunta , una mejor manera es definir el color usando un drawable :

 <item name="android:textColor">@drawable/default_text_color</item> 

… con res/drawable/default_text_color.xml especificando separar state_enabled="false" color:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:color="@android:color/darker_gray"/> <item android:color="@android:color/black"/> </selector> 
 <color name="white">#FFFFFF</color> <style name="Mytext" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">20sp</item> <item name="android:textColor">@color/white</item> <item name="android:textStyle">bold</item> <item name="android:typeface">sans</item> </style> 

Prueba este

  • Cómo obtener un color de la cadena hexadecimal del color
  • Invertir colores de mapa de bits
  • Cómo obtener el color de fondo de un ImageView
  • ActionBarCompat con Theme.AppCompat.Light.DarkActionBar muestra el texto del título blanco pero el texto del hilador negro
  • Cambio de color de TextView en el enfoque / presione
  • Cómo obtener de forma programática una lista de colores de un degradado en Android
  • AppCompat Color del título
  • Cómo tintar un mapa de bits a un color sólido
  • Android convert color int to hexa String
  • ¿Es posible cambiar el color del FadingEdge de un ListView?
  • MediaCodec y Camera: los colores no coinciden
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.