Android textAllCaps en el tema

Tengo un tema en el que quería que todas las vistas de texto sobre las actividades se capitalizan. Así que poner textAllCaps en un estilo y luego se aplicó a textViewStyle en mi tema como el siguiente

<style name="Widget.Apex.TextView" parent="android:Widget.TextView"> <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> <item name="android:textAllCaps">true</item> </style> <style name="MyTheme" parent="@android:style/Theme.Holo"> <item name="android:textViewStyle">@style/Widget.Apex.TextView</item> </style> 

Desafortunadamente, esto tuvo el efecto secundario de convertir el título de mi aplicación, los subtítulos de ActionBar y los elementos de popmenu en mayúsculas. Así que pensé que sólo tendría los atributos ActionBarStyle, textAppearanceLargePopupMenu y textAppearanceSmallPopupMenu en mi tema para tener un estilo personalizado con textAllCaps = false. Sin embargo, esto no funciona. Sé que mis temas se están aplicando porque si fijo textColor o textStyle se aplican ambos a los títulos ya los artículos de menú. ¿Es posible sobreescribir el textoAllCaps en estos estilos?

 <style name="Widget.Apex.TextView" parent="android:Widget.TextView"> <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> <item name="android:textAllCaps">true</item> </style> <style name="TextAppearance.Apex.Widget.ActionBar.Title" parent="android:TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textAllCaps">false</item> <item name="android:textStyle">italic</item> </style> <style name="TextAppearance.Apex.Widget.ActionBar.Subtitle" parent="android:TextAppearance.Holo.Widget.ActionBar.Subtitle"> <item name="android:textAllCaps">false</item> <item name="android:textStyle">italic</item> <item name="android:textColor">#FF0000</item> </style> <style name="TextAppearance.Apex.Widget.PopupMenu.Large" parent="android:TextAppearance.Holo.Widget.PopupMenu.Large"> <item name="android:textAllCaps">false</item> <item name="android:textStyle">italic</item> <item name="android:textColor">#FF0000</item> </style> <style name="TextAppearance.Apex.Widget.PopupMenu.Small" parent="android:TextAppearance.Holo.Widget.PopupMenu.Small"> <item name="android:textAllCaps">false</item> <item name="android:textStyle">italic</item> <item name="android:textColor">#FF0000</item> </style> <style name="Widget.Apex.ActionBar" parent="android:Widget.Holo.ActionBar"> <item name="android:titleTextStyle">@style/TextAppearance.Apex.Widget.ActionBar.Title</item> <item name="android:subtitleTextStyle">@style/TextAppearance.Apex.Widget.ActionBar.Subtitle</item> </style> <style name="MyTheme" parent="@android:style/Theme.Holo"> <item name="android:actionBarStyle">@style/Widget.Apex.ActionBar</item> <item name="android:textAppearanceLargePopupMenu">@style/TextAppearance.Apex.Widget.PopupMenu.Large</item> <item name="android:textAppearanceSmallPopupMenu">@style/TextAppearance.Apex.Widget.PopupMenu.Small</item> <item name="android:textViewStyle">@style/Widget.Apex.TextView</item> </style> 

Gracias, Jonathan

Mediante el uso de AppCompat textAllCaps en las aplicaciones de Android que soportan API anteriores (menos de 14)

Un trabajo alrededor para esto definiría explícitamente el estilo como esto:

 <android.support.v7.internal.widget.CompatTextView style="@style/MyTextViewStyle" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" app:textAllCaps="true"/> 

O, alternativamente, utilizar un nuevo estilo que hereda textViewStyle y agrega el atributo textAllCaps junto con cualquier otro estilo de su elección:

  <style name="MyCompatTextViewStyle" parent="MyTextViewStyle"> <item name="textAllCaps">true</item> </style> 

En disposición:

 <android.support.v7.internal.widget.CompatTextView style="@style/MyCompatTextViewStyle" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

Nota:

1> este widget no heredará ningún estilo por defecto que se establezca en su tema a través de android:textViewStyle

2> El uso de este widget parece ser interno dado el nombre del paquete que significa que no está realmente destinado a la API pública. También no está "totalmente al horno" en que el atributo textAllCaps debe estar directamente en el estilo / vista y no puede estar en el estilo textAppearance para que funcione.

Pruebe con textAllCaps y android:textAllCaps .

 <style name="TextViewStyle"> <item name="textAllCaps">true</item> <item name="android:textAllCaps">true</item> </style> 

Pero creo que está funcionando sólo con la biblioteca de diseño 23.2.0 o posterior.

  • actionBarSherlock subtítulo textSize
  • ¿Cómo referenciar los atributos de estilo de un drawable?
  • Barra de herramientas Sugerencias de búsqueda
  • Deshabilitar todos los efectos de sonido (claves de hardware también) en Android
  • Color de acento Android DatePickerDialog (en v21 +)
  • ActionBarSherlock - Estilo contiene clave con entrada incorrecta
  • Color de fondo predeterminado de Theme.AppCompat.Light android
  • Aplicación de tema transparente a la actividad: no se ajusta a pantalla completa en dispositivo
  • No hay estilo ViewPagerIndicator en combinación con SherlockActionBar
  • Cómo cambiar el tema de Darcula a predeterminado en Android Studio
  • Tema XML de Android que hereda de dos temas principales?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.