web-dev-qa-db-fra.com

Définir le style TextView (gras ou italique)

Comment définir le style TextView (gras ou italique) avec Java et sans utiliser la disposition XML?

En d'autres termes, j'ai besoin d'écrire Android:textStyle avec Java.

732
JustMe
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

Pour conserver le caractère précédent

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
1679
Tanmay Mandal

Essayez ceci pour définir TextView en gras ou en italique

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
254
Niranj Patel

Par programme:

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:

Vous pouvez définir directement dans un fichier XML dans <TextView /> comme: 

Android:textStyle="normal"
Android:textStyle="normal|bold"
Android:textStyle="normal|italic"
Android:textStyle="bold"
Android:textStyle="bold|italic"
125
Pratik Butani

Vous avez deux options:

Option 1 (fonctionne uniquement pour gras, italique et souligné):

String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(Html.fromHtml(s));

Option 2:

Utilisez un Spannable ; c'est plus compliqué, mais vous pouvez modifier dynamiquement les attributs du texte (non seulement gras/italique, mais aussi les couleurs).

84
Gabriel Negut

Par programme:

Vous pouvez faire par programme en utilisant la méthode setTypeface():

Ci-dessous le code pour la police de caractères par défaut 

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

et si vous voulez définir custom Typeface:

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

XML:

Vous pouvez définir directement dans un fichier XML dans <TextView /> comme ceci: 

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

Ou vous pouvez définir votre police fav (à partir des actifs). pour plus d'informations voir lien

31
akshay
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);

définissez maintenant les propriétés textview.

text.setTypeface(null, Typeface.BOLD);  //-- for only bold the text
text.setTypeface(null, Typeface.BOLD_ITALIC);  //-- for  bold & italic the text
text.setTypeface(null, Typeface.ITALIC);  // -- for  italic the text
12
Akash Thakkar

Simplement si vous voulez faire du texte gras . Écrivez cette ligne dans votre mise en page dans la propriété de vue texte

Android:textStyle="bold"
11
Hira Khan

essayez ceci pour définir votre style TextView avec du code Java

txt1.setTypeface(null,Typeface.BOLD_ITALIC);
10
Nikhil
TextView text = (TextView)findViewById(R.layout.textName);
text.setTypeface(null,Typeface.BOLD);
9
Khushi

Ce serait 

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

et italic devrait pouvoir remplacer Typeface.DEFAULT_BOLD par Typeface.DEFAULT_ITALC.

Dites-moi comment ça marche.

8
DustinRiley

Utilisez textView.setTypeface(Typeface tf, int style); pour définir la propriété de style de TextView . Voir la documentation développeur pour plus d'informations.

5
Dinesh Sharma

Essaye ça:

TextView textview = (TextView)findViewById(R.id.textview_idname);
textview.setTypeface(null,Typeface.BOLD);
5
Black_shadow

Une façon de faire est de:

myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);

Une autre option si vous voulez conserver le caractère précédent et ne pas perdre les éléments précédemment appliqués: 

myTextView.setTypeface(textView.getTypeface(), Typeface.NORMAL);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD);        
myTextView.setTypeface(textView.getTypeface(), Typeface.ITALIC);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); 
3
param

Pour ce faire, utilisez les styles personnalisés ..___. Exemple.

Dans styles.xml, ajoutez ce qui suit.

<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="MyApp.TextAppearance.LoginText">
    <item name="Android:textStyle">bold|italic</item>
</style>

Appliquez ce style à votre TextView comme suit.

<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    style="@style/MyApp.TextAppearance.LoginText" />
3
Shivanand Darur

Vous pouvez essayer comme ça:

<string name="title"><u><b><i>Your Text</i></b></u></string>
2
Vishal Vaishnav

Et comme expliqué ici Ressources Android String Développeurs si vous devez utiliser des paramètres dans votre ressource texte stylisée, vous devez échapper aux crochets

<resources>
<string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
</resources>

et appelez formatHtml (chaîne)

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
1
Angelo Nodari

Dans mon cas:

1 - texte fixe

2 - jeu de caractères

holder.title.setText(item.nome);
holder.title.setTypeface(null, Typeface.BOLD);
1
FlipNovid

Depuis que je veux utiliser une police personnalisée, seule la conjonction de plusieurs réponses fonctionne pour moi. Évidemment, les paramètres de mon layout.xml comme Android:textStlyle="italic" ont été ignorés par AOS. Alors finalement, je devais faire comme suit: Dans strings.xml la chaîne cible a été déclarée comme:

<string name="txt_sign"><i>The information blah blah ...</i></string>

puis en plus dans le code:

TextView textSign = (TextView) findViewById(R.id.txt_sign);
FontHelper.setSomeCustomFont(textSign);
textSign.setTypeface(textSign.getTypeface(), Typeface.ITALIC);

Je n'ai pas essayé l'option Spannable (qui, je suppose, DOIT fonctionner), mais

textSign.setText(Html.fromHtml(getString(R.string.txt_sign))) 

n'a eu aucun effet. De plus, si je supprime le italic tag de strings.xml en laissant le setTypeface() tout seul, cela n'a aucun effet non plus. Tricky Android ...

1
Stan
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

Pour conserver le caractère précédent

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
0
Amirhf
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);
text.setTypeface(null,Typeface.BOLD);

Utilisez la méthode ci-dessus pour définir la police de caractères par programme. 

0
Tulsi

Le meilleur moyen est de le définir dans styles.xml 

<style name="common_txt_style_heading" parent="Android:style/Widget.TextView">
        <item name="Android:textSize">@dimen/common_txtsize_heading</item>
        <item name="Android:textColor">@color/color_black</item>
        <item name="Android:textStyle">bold|italic</item>
</style>

Et mettez-le à jour dans TextView

  <TextView
     Android:id="@+id/txt_userprofile"
     style="@style/common_txt_style_heading"
     Android:layout_width="wrap_content"
     Android:layout_height="wrap_content"
     Android:layout_centerHorizontal="true"
     Android:layout_marginTop="@dimen/margin_small"
     Android:text="@string/some_heading" />
0
Faheem

Essaye ça:

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
0
mohamad sheikhi

C'est la seule chose qui a fonctionné pour moi sur un OnePlus 5T configuré avec la police OnePlus Slate ™:

textView.setTypeface(Typeface.create(textView.getTypeface(), useBold ? Typeface.BOLD : Typeface.NORMAL));

D'autres méthodes permettraient de revenir à Roboto lorsque les caractères sont gras ou normaux.

0
droid256

La manière la plus simple de procéder en fonction des critères de sélection de style est la suivante:

String pre = "", post = "";

if(isBold){
    pre += "<b>"; post += "</b>";
}
if(isItalic){
    pre += "<i>"; post += "</i>";
}
if(isUnderline){
    pre += "<u>"; post += "</u>";
}

textView.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
// you can also use it with EidtText
editText.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
0
muzamil