Establecer estilo para TextView mediante programación
Estoy intentando usar el TextView
constructor 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.
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);
Puede crear un estilo genérico y reutilizarlo en múltiples vistas de texto como la siguiente:
textView.setTextAppearance(this, R.style.MyTextStyle);
Editar: this
se refiere al Context
objeto.
Puedes pasar un ContextThemeWrapper al constructor de esta manera:
TextView myText = new TextView(new ContextThemeWrapper(MyActivity.this, R.style.my_style));
Puede establecer el estilo en el constructor (pero los estilos no se pueden cambiar/configurar dinámicamente).
View(Context, AttributeSet, int)
( int
es un atributo en el tema actual que contiene una referencia a un estilo)
Respuesta de Romain Guy
referencia