Establecer estilo para TextView mediante programación

Resuelto Ben asked hace 54 años • 13 respuestas

Estoy intentando usar el TextViewconstructor con un estilo como este:

TextView myText = new TextView(MyActivity.this, null, R.style.my_style);

Sin embargo, cuando hago esto, la vista de texto no parece adoptar el estilo (verifiqué el estilo configurándolo en un objeto estático).

También intenté usarlo myText.setTextAppearance(MyActivity.this, R.style.my_style)pero tampoco funciona.

Ben avatar Jan 01 '70 08:01 Ben
Aceptado

No creo que puedas configurar el estilo mediante programación. Para solucionar esto, puede crear un archivo xml de diseño de plantilla con el estilo asignado, por ejemplo en res/layout cree tvtemplate.xml como con el siguiente contenido:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is a template"
        style="@style/my_style" />

luego infle esto para crear una instancia de su nuevo TextView:

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
Dan Kilpatrick avatar Mar 30 '2011 15:03 Dan Kilpatrick

Puede crear un estilo genérico y reutilizarlo en múltiples vistas de texto como la siguiente:

textView.setTextAppearance(this, R.style.MyTextStyle);

Editar: thisse refiere al Contextobjeto.

Shahul3D avatar Oct 05 '2012 11:10 Shahul3D

Puedes pasar un ContextThemeWrapper al constructor de esta manera:

TextView myText = new TextView(new ContextThemeWrapper(MyActivity.this, R.style.my_style));
maxcanna avatar Jul 03 '2013 07:07 maxcanna

Puede establecer el estilo en el constructor (pero los estilos no se pueden cambiar/configurar dinámicamente).

View(Context, AttributeSet, int)( intes un atributo en el tema actual que contiene una referencia a un estilo)

Respuesta de Romain Guy

referencia

Dandre Allison avatar Feb 19 '2013 02:02 Dandre Allison