J'ai une application Android sur laquelle, lorsque l'utilisateur appuie sur une TextView
, je souhaite appliquer un style défini.
Je pensais trouver un textview.setStyle()
mais il n’existe pas. j'ai essayé
textview.setTextAppearance();
mais ça ne marche pas.
Je l'ai fait 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 mon fichier "strings.xml" comme ceci:
<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>
Ensuite, dans mon code, j'ai créé un ClickListener pour intercepter l'événement tap sur cet objet TextView: EDIT: À partir de l'API 23, "setTextAppearance" est obsolète
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 revenir 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
, je viens de l'utiliser dans une application il y a 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 pouvez le définir à partir du code. Police de caractère
Par programme: exécution
Vous pouvez faire par programme en utilisant 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: Design Time
Vous pouvez également définir en XML:
Android:textStyle="normal"
Android:textStyle="normal|bold"
Android:textStyle="normal|italic"
Android:textStyle="bold"
Android:textStyle="bold|italic"
J'espère que cela aidera
Sommé
j'ai trouvé textView.setTypeface(Typeface.DEFAULT_BOLD);
comme étant la méthode la plus simple.
essayez cette ligne de code.
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
ici, il obtiendra la police de caractères actuelle de cette vue de texte et la remplacera par une nouvelle police de caractères. La nouvelle police est DEFAULT_BOLD
, mais vous pouvez en appliquer beaucoup plus.
Selon le style que vous souhaitez définir, vous devez utiliser différentes méthodes. TextAppearance a son propre setter, TypeFace a son propre setter, l'arrière-plan a son propre setter, etc.
Voir doco pour setText () dans TextView http://developer.Android.com/reference/Android/widget/TextView.html
Pour styler vos chaînes, attachez les objets Android.text.style. * À SpannableString ou consultez la documentation Types de ressources disponibles pour obtenir un exemple de définition de texte mis en forme dans le fichier de ressources XML.