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.
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);
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.
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);
vous un jeu de code. Caractère "de 151930920"
j'ai trouvé que textView.setTypeface(Typeface.DEFAULT_BOLD);
était la méthode la plus simple.
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
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.
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.
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.