¿Hay alguna manera de establecer el textStyle
atributo de un TextView
programáticamente? No parece haber un setTextStyle()
método.
Para ser claros, ¡no estoy hablando de los estilos Ver / Widget! Estoy hablando de lo siguiente:
<TextView
android:id="@+id/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World"
android:textStyle="bold" />
Respuestas:
setTypeface es el atributo textStyle.
Como agregó Shankar V , para preservar los atributos de tipo de letra establecidos previamente puede usar:
fuente
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
textview.getTypeface().getStyle()
esandroid:textStyle
Digamos que tiene un estilo llamado RedHUGEText en sus valores / styles.xml:
Simplemente cree su TextView como de costumbre en el archivo XML layout / your_layout.xml, digamos:
Y en el código de Java de tu Actividad haces esto:
¡Funcionó para mí! Y aplicó color, tamaño, gravedad, etc. Lo he usado en teléfonos y tabletas con niveles de API de Android de 8 a 17 sin problemas. Tenga en cuenta que a partir de Android 23, ese método ha quedado en desuso. El argumento de contexto se ha eliminado, por lo que la última línea debería ser:
Recuerde ... esto es útil solo si el estilo del texto realmente depende de una condición en su lógica Java o si está construyendo la interfaz de usuario "sobre la marcha" con código ... si no lo hace, es mejor simplemente hacer:
¡Siempre puedes tenerlo a tu manera!
fuente
<style>
etiqueta. Hace los comunes (tamaño, color, estilo), pero no aplica otros (incluyendo relleno, fondo, gravedad, etc.)Busca
setTextAppearance
o tambiénsetTextTypeface
. Hay una pregunta similar sobre stackoverflow: cómo cambiar el estilo de TextView en tiempo de ejecuciónfuente
Hay muchas maneras de lograr esta tarea, algunas están a continuación:
1)
2)
3)
4)
o si quieres a través de xml
fuente
•
Kotlin Version
Para conservar la fuente actual además del estilo de texto:
fuente
Esta pregunta se hace en muchos lugares de muchas maneras diferentes. Originalmente lo respondí aquí, pero siento que también es relevante en este hilo (ya que terminé aquí cuando estaba buscando una respuesta).
No hay una solución de línea para este problema, pero esto funcionó para mi caso de uso. El problema es que el constructor 'View (context, attrs, defStyle)' no se refiere a un estilo real, quiere un atributo. Entonces, nosotros:
En 'res / values / attrs.xml', defina un nuevo atributo:
En res / values / styles.xml 'voy a crear el estilo que quiero usar en mi TextView personalizado
En 'res / values / themes.xml' o 'res / values / styles.xml', modifique el tema para su aplicación / actividad y agregue el siguiente estilo:
Finalmente, en su TextView personalizado, ahora puede usar el constructor con el atributo y recibirá su estilo
Vale la pena señalar que usé repetidamente customTextView en diferentes variantes y diferentes lugares, pero de ninguna manera se requiere que el nombre de la vista coincida con el estilo o el atributo ni nada. Además, esta técnica debería funcionar con cualquier vista personalizada, no solo TextViews.
fuente
Esto funciono para mi
o
fuente
Lo he resuelto con dos métodos simples.
Sigue la explicación.
Mi declaración de estilo existente:
Mi código de Android Java:
Saludos.
fuente
Puedes probar este
fuente
Como
setTextAppearance(resId)
solo está disponible para API 23 y superior, use:TextViewCompat.setTextAppearance(textViewGoesHere, resId)
Este método se implementa internamente de la siguiente manera:
fuente
Como se mencionó aquí , esta característica no es compatible actualmente.
fuente