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

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

  • Android: cambia el texto del botón y el color de fondo
  • Android: ¿Generar color aleatorio al hacer clic?
  • ¿Cómo puedo cambiar programáticamente el valor de un color en colors.xml?
  • Colorear las líneas de logcat en Linux
  • No se puede cambiar el color del botón de radio en Android
  • ¿Cómo puedo detectar mejor los diferentes colores LED con la cámara de un teléfono Android y OpenCV?
  • Cómo colorear diferentes partes del texto dibujado en un lienzo en Android?
  • ¿Cómo obtener colores del sistema Android?
  • Quiero crear un "modo nocturno" rojo para mi aplicación para Android
  • ¿Cómo configurar el color / estilo personalizado de ActionBar?
  • Los colores de ShapeRenderer dejan de funcionar al renderizar imágenes con SpriteBatch
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.