Comment mettre le style de police en gras, italique et souligné dans un texte Android?

je veux faire le contenu d'un TextView en gras, italique et souligné. J'ai essayé le code suivant et il fonctionne, mais ne souligne pas.

<Textview android:textStyle="bold|italic" ..

Comment faire? Toute rapide des idées?

359
demandé sur Beryllium 2011-01-07 10:45:33

9 réponses

Je ne sais pas pour le soulignement, mais pour le gras et l'italique il y a "bolditalic" . Il n'y a aucune mention de soulignement ici: http://developer.android.com/reference/android/widget/TextView.html#attr_android:textStyle

pensez que pour utiliser le mentionné bolditalic vous devez, Et je cite de cette page

doit être une ou plusieurs (séparées par"|") des valeurs constantes suivantes.

pour que vous utilisiez bold|italic

vous pouvez vérifier cette question pour le soulignement: puis-je souligner le texte dans une mise en page android?

229
répondu Nanne 2017-05-23 12:10:31

cela devrait faire de votre TextView bold , souligné et italique en même temps.

les chaînes.xml

<resources>
    <string name="register"><u><b><i>Copyright</i></b></u></string>
</resources>

pour définir cette chaîne à votre TextView, faites-le dans votre main .xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/register" />

ou dans JAVA ,

TextView textView = new TextView(this);
textView.setText(R.string.register);

parfois, l'approche ci-dessus ne sera pas utile lorsque vous pourriez avoir à utiliser du texte dynamique. Donc dans ce cas SpannableString entre en action.

String tempString="Copyright";
TextView text=(TextView)findViewById(R.id.text);
SpannableString spanString = new SpannableString(tempString);
spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.BOLD), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.ITALIC), 0, spanString.length(), 0);
text.setText(spanString);

SORTIE

enter image description here

340
répondu Andro Selva 2013-10-22 12:51:35

Ou tout comme dans Kotlin:

val tv = findViewById(R.id.textViewOne) as TextView
tv.setTypeface(null, Typeface.BOLD_ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD or Typeface.ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD)
// OR
tv.setTypeface(null, Typeface.ITALIC)
// AND
tv.paintFlags = tv.paintFlags or Paint.UNDERLINE_TEXT_FLAG

ou en Java:

TextView tv = (TextView)findViewById(R.id.textViewOne);
tv.setTypeface(null, Typeface.BOLD_ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD|Typeface.ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD);
// OR
tv.setTypeface(null, Typeface.ITALIC);
// AND
tv.setPaintFlags(tv.getPaintFlags()|Paint.UNDERLINE_TEXT_FLAG);

Keep it simple et en une seule ligne :)

120
répondu h0ussni 2017-08-03 07:37:29

pour les caractères gras et italiques ce que vous faites est correct pour les soulignements utiliser le code suivant

HelloAndroid.java

 package com.example.helloandroid;

 import android.app.Activity;
 import android.os.Bundle;
 import android.text.SpannableString;
 import android.text.style.UnderlineSpan;
import android.widget.TextView;

public class HelloAndroid extends Activity {
TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    textview = (TextView)findViewById(R.id.textview);
    SpannableString content = new SpannableString(getText(R.string.hello));
    content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
    textview.setText(content);
}
}

principal.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"
android:textStyle="bold|italic"/>

de la chaîne.xml

<?xml version="1.0" encoding="utf-8"?>
 <resources>
  <string name="hello">Hello World, HelloAndroid!</string>
  <string name="app_name">Hello, Android</string>
</resources>
68
répondu Vivek 2014-11-15 20:36:21

C'est un moyen facile d'ajouter un soulignement, tout en maintenant les autres paramètres:

textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
45
répondu sonida 2014-07-08 18:15:20

Programmatialy:

vous pouvez le faire programmatiquement en utilisant la méthode setTypeface ():

ci-dessous est le code pour le caractère 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 le caractère personnalisé:

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 le fichier XML comme:

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
32
répondu King of Masses 2015-06-08 12:31:28

sans citations fonctionne pour moi:

<item name="android:textStyle">bold|italic</item>
20
répondu Lotfi 2014-04-14 10:27:25

si vous lisez ce texte à partir d'un fichier ou du réseau.

vous pouvez y parvenir en ajoutant des balises HTML à votre texte comme mentionné

This text is <i>italic</i> and <b>bold</b>
and <u>underlined</u> <b><i><u>bolditalicunderlined</u></b></i>

et ensuite vous pouvez utiliser la classe HTML qui traite les chaînes HTML en texte stylisé affichable.

// textString is the String after you retrieve it from the file
textView.setText(Html.fromHtml(textString));
19
répondu Ahmed Hegazy 2017-03-15 00:49:33
    style="?android:attr/listSeparatorTextViewStyle
  • en faisant ce style, u peut atteindre le soulignement
5
répondu dreamdeveloper 2014-09-02 09:26:26