259 votes

Le style d'Android en code

J'essaie d'utiliser le constructeur de TextView avec un style comme celui-ci :

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

Cependant, lorsque je fais cela, la vue texte ne semble pas prendre le style (j'ai vérifié le style en le définissant sur un objet statique).

J'ai également essayé d'utiliser myText.setTextAppearance(MyActivity.this, R.style.my_style) mais cela ne fonctionne pas non plus

325voto

dan k Points 1984

Je ne pense pas que vous puissiez définir le style par programme. Pour contourner cela, vous pouvez créer un fichier xml de mise en page de modèle avec le style attribué, par exemple dans res/layout créer tvtemplate.xml comme avec le contenu suivant :

<?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" />

puis gonflez-le pour instancier votre nouveau TextView :

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);

J'espère que cela vous aidera.

125voto

Shahul3D Points 996

Pour moi, la solution ci-dessous fonctionne parfaitement avec les TextViews :

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

101voto

maxcanna Points 772

Vous pouvez passer un ContextThemeWrapper au constructeur comme ceci :

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

17voto

Dandre Allison Points 2434

Vous pouvez définir le style dans le constructeur (mais les styles ne peuvent pas être modifiés/réglés dynamiquement).

Réponse de Romain Guy

5voto

Chris Cashwell Points 9264

La modification dynamique des styles n'est pas (encore) prise en charge. Vous devez définir le style avant la vue est créée, via XML.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X