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?
- ¿Por qué un botón pierde su comportamiento original después de cambiar su color?
- Colorear la barra de estado de Android en Nav Drawer
- ¿Cómo mostrar una Actividad de ActionBarCompat como un diálogo que establece su tema en AndroidManifest.xml?
- Tema diferente para diferentes versiones de SDK de Android
- Error de atributo al cambiar a Diseño de material
<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
- El fondo personalizado para activateBackgroundIndicator en ActionBarSherlock no funciona
- Lollipop Barra de progreso Tinción
- El tema Holo no se aplica a los diálogos cuando se utiliza la biblioteca holoeverywhere
- Cómo establecer false cancelable a una actividad cuando se abre como un cuadro de diálogo?
- Cómo hacer aplicaciones hermosas y con estilo como Timely
- No se puede establecer colorControlNormal y android: textColor en estilo
- Personalizar el relleno de las pestañas de ActionBar
- ¿Cómo puedo cambiar el tema de una SettingsActivity en Android?
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.
- Problemas al iniciar error en Android Studio cuando packageDebug en Max OS X
- ¿Cómo evitar el emulador que cuelga de Android getSystemService (Context.SENSOR_SERVICE)?