Comment définir TextStyle textStyle comme gras, italique


843

Comment définir le TextViewstyle (gras ou italique) dans Java et sans utiliser la disposition XML?

En d'autres termes, j'ai besoin d'écrire android:textStyleavec Java.

Réponses:


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

Pour conserver la police précédente

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)

5
Pour supprimer le style peut être utilisé Typeface.NORMAL
Brais Gabin

351
Si vous faites cela, vous perdrez toute police de caractères précédente. Pour conserver le précédent, faites quelque chose comme textView.setTypeface (textView.getTypeface (), Typeface.BOLD_ITALIC);
léocadiotine

34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);ne supprimera pas le style gras ou italique de a TextView. Vous devrez utiliser textView.setTypeface(null, Typeface.NORMAL);pour cela.
Jarett Millard

58
Pour conserver toute police de caractères précédente mais pour vous débarrasser du style gras ou italique, utilisez le code suivant:textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
Shnkc

6
Merci @Shnkc, vous m'avez indiqué la bonne direction. En fait, vous avez juste besoin de: textView.setTypeface (Typeface.create (textView.getTypeface (), Typeface.NORMAL));
PedroHidalgo

271

Essayez ceci pour activer le TextViewgras ou l'italique

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

14
Par ailleurs, si vous voulez effacer un style de police existant, vous devrez faire quelque chose de différent, par exemple:tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
greg7gkb

@ greg7gkb tv.setTypeface(null, Typeface.BOLD);ne fera- t- il pas de même (effacer un style de police existant)?
Prabs

Passer null dans setTypeface () signifie que TextView utilise une valeur par défaut codée en dur qui peut être différente de la police précédemment définie.
greg7gkb

142

Par programme:

Vous pouvez le 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 <TextView />comme:

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

11
Questioner a demandé comment le faire sans utiliser la disposition XML.
JulianSymes

6
Vérifiez la question with in Java and without using XMLAu fait, cela aidera également les autres.
Pratik Butani du

5
Oui. Je suis venu ici via Google et cela m'a juste aidé. Merci :)
Atul

96

Vous avez deux options:

Option 1 (ne fonctionne que pour les caractères 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 de texte (non seulement gras / italique, mais aussi les couleurs).


6
Avec, typeFacevous pouvez définir un style unique pour tout le texte.
Gabriel Negut

2
quand j'essaie dans ma rangée personnalisée, ça ne comprend pas pourquoi? String s1 = "<b> Vous êtes: </b>"; holder.address = (TextView) convertView.findViewById (R.id.address_text_view); holder.address.setText (Html.fromHtml (s1) + track.getAddress ());
Shylendra Madda du

2
Cette méthode est un excellent style de texte partiel. Comme une citation dans une grande vue de texte.
Salih Erikci

1
La première méthode ne fonctionne pas dans mon cas private void createTextView (String title, String text) {textView = new TextView (this); textView.setTextSize (17); textView.setText (Html.fromHtml ("<b>" + title + "</b>") + ":" + text); }
garenyondem

1
Les options extensible et fromHTML peuvent ralentir la saisie / setText si le texte est volumineux en raison des recalculs de la mise en page. Évitez-le si vous disposez d'autres méthodes.
Eugene Kartoyev

43

Par programme:

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

Voici le code de la police 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 souhaitez définir une police de caractères personnalisée :

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 <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 ressources). pour plus d'informations, voir le lien


14
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);

définissez maintenant les textviewpropriétés ..

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

11

Tout simplement si vous voulez mettre du texte en gras . écrire cette ligne dans votre mise en page dans la propriété d'affichage de texte

android:textStyle="bold"

10
TextView text = (TextView)findViewById(R.layout.textName);
text.setTypeface(null,Typeface.BOLD);

10

Ce serait

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

et l'italique devrait pouvoir être remplacé Typeface.DEFAULT_BOLDpar Typeface.DEFAULT_ITALC.

Faites-moi savoir comment cela fonctionne.


10

essayez ceci pour définir votre TextView style par le code java

txt1.setTypeface(null,Typeface.BOLD_ITALIC);


7

Essaye ça:

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

6

Essaye ça:

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

4

La manière standard de procéder consiste à utiliser les styles personnalisés. Ex-

Dans styles.xmlajouter 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 TextViewcomme suit.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/MyApp.TextAppearance.LoginText" />

4

Vous pouvez notamment:

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 souhaitez conserver la police de caractères précédente et que vous ne voulez pas perdre la précédente application:

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); 

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

Pour conserver la police précédente

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)

3

Vous pouvez essayer comme ceci:

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

3

La manière la plus simple que vous pouvez faire en fonction des critères de sélection de style est:

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));

2

Puisque je veux utiliser une police personnalisée, seule la conjonction de plusieurs réponses me convient. De toute évidence, les paramètres de mon layout.xmlgoût ont android:textStlyle="italic"été ignorés par AOS. Donc, finalement, je devais faire comme suit: dans strings.xmlla 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' Spannableoption (qui je suppose DOIT fonctionner) mais

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

n'a eu aucun effet. De plus, si je retire le italic tagde strings.xmllaisser le setTypeface()tout seul, cela n'a aucun effet non plus. Android délicat ...


2

Et comme expliqué ici Ressources pour les développeurs Android Si vous devez utiliser des paramètres dans votre ressource de texte stylé, vous devez échapper aux crochets d'ouverture

<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);

2

Dans mon cas:

1 - définir le texte

2 - définir la police

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

1

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 le feraient retomber sur Roboto lorsque BOLD ou NORMAL.


1

Lors de l'utilisation de balises simplifiées avec AndroidX, envisagez d'utiliser HtmlCompat.fromHtml ()

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(HtmlCompat.fromHtml(s, FROM_HTML_MODE_LEGACY));

0

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
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);
text.setTypeface(null,Typeface.BOLD);

Utilisez la méthode ci-dessus pour définir la police par programmation.


0

1) Vous pouvez le définir avec TypeFace. 2) Vous pouvez utiliser directement dans strings.xml (dans votre dossier de valeurs) 3) Vous pouvez String myNewString = "Ceci est mon texte en gras Ceci est ma chaîne en italique Ceci est ma chaîne soulignée


0

Vous pouvez définir les différentes polices en utilisant l'exemple ci-dessous -

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

Ou si vous souhaitez définir une police différente et sa police de caractères. Ajoutez-le à l'actif ou au dossier brut, puis utilisez-le comme

  Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");
  tv1.setTypeface(face);

  Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
  tv2.setTypeface(face1);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.