43 votes

Comment puis-je définir le style d'un textView de manière programmatique ?

Je crée un textView de manière programmatique. Existe-t-il un moyen de définir le style de ce textView ? Quelque chose de similaire à

style="@android:style/TextAppearance.DeviceDefault.Small"

que j'utiliserais si j'avais un layout.xml fichier.

71voto

Matthew Points 1650

Vous ne pouvez pas définir le style d'une vue de manière programmatique, mais vous pouvez faire quelque chose comme suit textView.setTextAppearance(context, android.R.style.TextAppearance_Small); .

33voto

Raghav Sood Points 43264

Il n'est actuellement pas possible de définir le style d'une vue de manière programmatique.

Pour contourner ce problème, vous pouvez créer un fichier xml de mise en page de modèle avec le style attribué, par exemple dans le fichier 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="@android:style/TextAppearance.DeviceDefault.Small" />

puis gonflez-le pour instancier votre nouveau TextView :

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

16voto

John Rattz Points 310

En fait, cela est possible à partir du niveau 21 de l'API.

TextView a un Constructeur de 4 paramètres :

TextView (Context context, 
          AttributeSet attrs, 
          int defStyleAttr, 
          int defStyleRes)

Les deux paramètres du milieu ne sont pas nécessaires dans ce cas. Le code suivant crée un TextView directement dans une activité et définit uniquement sa ressource de style :

TextView myStyledTextView = new TextView(this, null, 0, R.style.my_style);

8voto

shmakova Points 2586

Version compatible (en raison de la dépréciation de l'api 23) :

TextViewCompat.setTextAppearance(textView, android.R.style.TextAppearance_DeviceDefault_Small);

6voto

Pragnani Points 12259

Essayez ceci

textview.setTextAppearance(context, R.style.yourstyle);

cela peut ne pas fonctionner essayez de créer un xml avec le textview comme ceci

textviewstyle.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="@android:style/TextAppearance.DeviceDefault.Small" />

Pour obtenir le style désiré, gonflez le xml qui contient le textview.

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

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