Me gustaría poder asignar un atributo o estilo xml a un TextView
texto que haga cualquier texto que tenga en TODAS LAS LETRAS MAYÚSCULAS.
Los atributos android:inputType="textCapCharacters"
y android:capitalize="characters"
no hacen nada y parecen ser para texto insertado por el usuario, no a TextView
.
Me gustaría hacer esto para poder separar el estilo del contenido. Sé que podría hacer esto programáticamente, pero nuevamente quiero mantener el estilo fuera del contenido y el código.
android
textview
capitalization
cottonBallPaws
fuente
fuente
Respuestas:
Pensé que era una solicitud bastante razonable, pero parece que no puedes hacerlo en este momento.¡Qué fracaso total! jajaja
Actualizar
Ahora puede usar textAllCaps para forzar todas las mayúsculas.
fuente
textAllCaps
causas cierre de la aplicación si se ha especificadoandroid:fontFamily
enthemes.xml
.¿Qué pasa con android: textAllCaps ?
fuente
Al usar AppCompat
textAllCaps
en aplicaciones de Android que admiten API antiguas (menos de 14)Hay un widget de interfaz de usuario que se incluye con AppCompat llamado CompatTextView es una extensión de TextView personalizada que agrega soporte para textAllCaps
Para la nueva API de Android> 14 puede usar:
Un simple ejemplo:
Fuente: developer.android
Actualizar:
fuente
CompatTextView
se usa en laScrollingTabCointainerView
que se usaToolbarWidgetWrapper
, que suena bastante nuevo y siempre que el nombre mantenga "v7" en su nombre, esta es una garantía suficientemente buena para mí queCompatTextView
se quedará donde está.CompatTextView
fue reemplazado por laAppCompatTextView
última biblioteca appcompat-v7. Estabas en lo correcto.Es realmente muy decepcionante que no pueda hacerlo con estilos (
<item name="android:textAllCaps">true</item>
) o en cada archivo de diseño XML con el atributo textAllCaps , y la única forma de hacerlo es usar theString.toUpperCase () en cada una de las cadenas cuando lo hace un textViewXXX.setText (theString).En mi caso, no quería tener theString.toUpperCase () en todas partes de mi código, sino tener un lugar centralizado para hacerlo porque tenía algunas Actividades y diseños de elementos de lista con TextViews que se suponía que se capitalizaban todo el tiempo (un título) y otros que no lo hicieron ... entonces ... algunas personas pueden pensar que es una exageración, pero creé mi propia clase CapitalizedTextView extendiendo android.widget.TextView y anulé el método setText capitalizando el texto sobre la marcha.
Al menos, si el diseño cambia o si necesito eliminar el texto en mayúscula en futuras versiones, solo necesito cambiar a TextView normal en los archivos de diseño.
Ahora, tenga en cuenta que hice esto porque el Diseñador de la aplicación realmente quería este texto (los títulos) en MAYÚSCULAS en toda la aplicación sin importar la capitalización de contenido original, y también tenía otras TextViews normales donde la capitalización vino con el contenido real .
Esta es la clase:
Y siempre que necesite usarlo, simplemente declare con todo el paquete en el diseño XML:
Algunos argumentarán que la forma correcta de diseñar el texto en un TextView es usar una SpannableString , pero creo que sería una exageración aún mayor, sin mencionar que consumirá más recursos porque creará una instancia de otra clase que TextView.
fuente
Se me ocurrió una solución que es similar a la de RacZo en el hecho de que también he creado una subclase
TextView
que maneja el uso de mayúsculas en el texto.La diferencia es que, en lugar de anular uno de los
setText()
métodos, he usado un enfoque similar a lo queTextView
realmente hace en API 14+ (que es, desde mi punto de vista, una solución más limpia).Si observa la fuente , verá la implementación de
setAllCaps()
:La
AllCapsTransformationMethod
clase no es (actualmente) pública, pero aún así, la fuente también está disponible . He simplificado un poco esa clase (eliminé elsetLengthChangesAllowed()
método), por lo que la solución completa es esta:fuente
Parece que hay permiso en la configuración del teclado móvil, por lo que la forma más fácil de hacerlo es:
espero que esto funcione
fuente
El proyecto PixlUI le permite usar textAllCaps en cualquier vista de texto o subclase de vista de texto, incluyendo: Botón, EditarTexto AutocompletarEditarText Checkbox RadioButton y varios otros.
Deberá crear sus vistas de texto utilizando la versión pixlui en lugar de las de la fuente de Android, lo que significa que debe hacer esto:
PixlUI también le permite establecer un tipo de letra / fuente personalizado que coloca en su carpeta de activos.
Estoy trabajando en una bifurcación Gradle del marco PixlUI que usa gradle y permite especificar textAllCaps, así como el tipo de letra de los estilos en lugar de requerirlos en línea como lo hace el proyecto original.
fuente