Heureux d'entendre ça ... Marquer cette question comme résolue afin que les autres utilisateurs puissent la renvoyer.
Kartik Domadiya
4
Une troisième approche consisterait à utiliser Html.fromHtml("<u>This text will be underlined</u>"), mais je dois admettre que je suis beaucoup plus fan de l'utilisation de SpannableStrings. @Kartik: Vous pouvez aussi bien utiliser un StrikethroughSpansur le texte pour créer l'effet barré. :)
MH.
J'adore la 3e approche. Court, simple et concis et ajoute juste une ligne de code supplémentaire à mon programme.
Matt
Je sais que c'est un peu vieux, mais y a-t-il un moyen de définir l'épaisseur du soulignement?
Andreas Wong
lequel de ceux-ci est utilisé pour le contenu preferencesActivity, dans PreferenceCategory?
développeur android
40
entourez simplement votre texte avec la balise <u> dans votre fichier de ressources string.xml
@CHAKRAVARTHI cela ne fonctionnera pas si vous convertissez le texte en chaîne avant le réglage. Par exemple textView.setText(getString(R.string.text))<- faux . Droite:textView.setText(getText(R.string.text)) ou juste textView.setText(R.string.text). La raison beind ce que les getText()rendements Spannableavec des portées soulignement, mais si vous utilisez getString()ce convertira le Spannableà Stringrésultant étant portées supprimées.
Yaroslav Mytkalyk
bon point! J'ai modifié ma réponse actuelle afin d'être plus claire
Si votre TextView a une largeur fixe, une solution alternative peut être de créer une vue qui ressemblera à un soulignement et de la positionner juste en dessous de votre TextView.
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Mais Html.fromHtml (ressource String) était obsolète dans l'API 24.
Vous pouvez donc utiliser la dernière bibliothèque de support Android androidx.core.text.HtmlCompat . Avant cela, vous devez inclure la dépendance dans votre projet.
`implementation 'androidx.core:core:1.0.1'`
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>";
//underline textview using HtmlCompat.fromHtml() method
textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
En utilisant strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
Réponses:
Il existe trois façons de souligner le texte dans TextView.
SpannableString
setPaintFlags (); de TextView
Html.fromHtml ();
Laissez-moi vous expliquer toutes les approches:
1ère approche
Pour souligner le texte dans TextView, vous devez utiliser SpannableString
2ème approche
Vous pouvez utiliser la méthode setPaintFlags de TextView pour souligner le texte de TextView.
Pour par exemple.
Vous pouvez faire référence aux constantes de la classe Paint si vous souhaitez barrer le texte.
3e approche
Se servir de
Html.fromHtml(htmlString);
OU
la source
Html.fromHtml("<u>This text will be underlined</u>")
, mais je dois admettre que je suis beaucoup plus fan de l'utilisation de SpannableStrings. @Kartik: Vous pouvez aussi bien utiliser unStrikethroughSpan
sur le texte pour créer l'effet barré. :)entourez simplement votre texte avec la balise <u> dans votre fichier de ressources string.xml
et dans votre activité / fragment
la source
textView.setText(getString(R.string.text))
<- faux . Droite:textView.setText(getText(R.string.text))
ou justetextView.setText(R.string.text)
. La raison beind ce que lesgetText()
rendementsSpannable
avec des portées soulignement, mais si vous utilisezgetString()
ce convertira leSpannable
àString
résultant étant portées supprimées.Cela fonctionne pour moi.
la source
Pour quiconque regarde encore cette question. Ceci est pour un lien hypertexte, mais vous pouvez le modifier pour un simple soulignement:
Créez un dessin (hyperlink_underline.xml):
Créez un nouveau style:
Ensuite, utilisez ce style sur votre TextView:
la source
Si votre TextView a une largeur fixe, une solution alternative peut être de créer une vue qui ressemblera à un soulignement et de la positionner juste en dessous de votre TextView.
la source
Une solution simple et durable consiste à créer une liste de calques et à en faire l'arrière-plan de votre TextView:
la source
5 façons étonnantes de souligner un TextView dans Android - Kotlin / Java et XML
String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));
Mais Html.fromHtml (ressource String) était obsolète dans l'API 24.
Vous pouvez donc utiliser la dernière bibliothèque de support Android androidx.core.text.HtmlCompat . Avant cela, vous devez inclure la dépendance dans votre projet.
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>"; //underline textview using HtmlCompat.fromHtml() method textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
En utilisant strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
textview13.setText(HtmlCompat.fromHtml(getString(R.string.underline_text), HtmlCompat.FROM_HTML_MODE_LEGACY));
utilisation de PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); textview2.setText("2. Underline using setPaintFlags()");
en utilisant SpannableString
la source