Comment changer le style de TextView à l'exécution

j'ai une application android sur lequel, lorsque l'utilisateur appuie sur un TextView , je voudrais appliquer un style défini.

j'ai pensé trouver un textview.setStyle() mais il n'existe pas. J'ai essayé

textview.setTextAppearance();

mais ça ne marche pas.

91
demandé sur Azhar 2011-01-08 00:24:15

8 réponses

j'ai fait ceci en créant un nouveau fichier XML res/values/style.xml comme suit:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="boldText">
        <item name="android:textStyle">bold|italic</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

    <style name="normalText">
        <item name="android:textStyle">normal</item>
        <item name="android:textColor">#C0C0C0</item>
    </style>

</resources>

j'ai aussi une entrée dans mes" cordes.xml" fichier comme ceci:

<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>

puis, dans mon code j'ai créé un ClickListener pour piéger l'événement tap sur ce TextView: EDIT: à partir de API 23 'setTextAppearance' est déprécié

    myTextView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view){
                    //highlight the TextView
                    //myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    if (Build.VERSION.SDK_INT < 23) {
       myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    } else {
       myTextView.setTextAppearance(R.style.boldText);
    }
     myTextView.setBackgroundResource(R.color.highlightedTextViewColor);
                }
            });

pour le changer en arrière, vous utiliseriez ceci:

if (Build.VERSION.SDK_INT < 23) {
    myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
   myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
137
répondu Glenn 2016-05-17 12:12:25

comme Jonathan l'a suggéré, en utilisant textView.setTextTypeface fonctionne, je l'ai juste utilisé dans une application Il ya quelques secondes.

textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
87
répondu DKDiveDude 2012-10-03 12:43:10
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);

vous un jeu de code. Caractère "de 151930920"

11
répondu Azhar 2012-03-13 10:01:19

j'ai trouvé que textView.setTypeface(Typeface.DEFAULT_BOLD); était la méthode la plus simple.

2
répondu sfera 2012-05-17 14:24:51

par programme: temps d'Exécution

vous pouvez faire programmatically using setTypeface ():

textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text
textView.setTypeface(null, Typeface.BOLD);        // for Bold only
textView.setTypeface(null, Typeface.ITALIC);      // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

XML: Moment de la Conception

vous pouvez définir en XML aussi bien:

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"

Espérons que cela permettra de

Summved

2
répondu Summved Jain 2016-11-25 10:34:06

voir doco pour setText () dans TextView http://developer.android.com/reference/android/widget/TextView.html

pour modeler vos cordes, attachez android.texte.style.* les objets d'un SpannableString, ou consultez la liste des Types de Ressources de la documentation pour un exemple de configuration de texte mis en forme dans le fichier XML du fichier de ressources.

0
répondu GSree 2011-01-08 02:25:25

selon le style que vous voulez définir, vous devez utiliser des méthodes différentes. TextAppearance stuff a son propre setter, TypeFace a son propre setter, background a son propre setter, etc.

0
répondu akohout 2014-09-25 09:52:25

essayez cette ligne de code.

textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);

ici, il obtiendra la police de caractères actuelle de ce textview et la remplacera en utilisant une nouvelle police de caractères. La nouvelle police ici est DEFAULT_BOLD mais vous pouvez appliquer beaucoup plus.

0
répondu Md. Sajedul Karim 2016-03-30 15:46:25