Je veux dessiner le soulignement sous mon TextView. J'ai recherché quelques contenus mais je n'ai rien trouvé d'utile.
Quelqu'un peut-il m'aider ici?
Je veux dessiner le soulignement sous mon TextView. J'ai recherché quelques contenus mais je n'ai rien trouvé d'utile.
Quelqu'un peut-il m'aider ici?
Réponses:
Il existe trois façons de souligner le texte dans TextView.
setPaintFlags (); de TextView
Laissez-moi vous expliquer toutes les approches:
1ère approche
Pour souligner le texte dans TextView, vous devez utiliser SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
2ème approche
Vous pouvez utiliser la méthode setPaintFlags de TextView pour souligner le texte de TextView.
Pour par exemple.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
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);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
OU
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
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é. :)
entourez simplement votre texte avec la balise <u> dans votre fichier de ressources string.xml
<string name="your_string"><u>Underlined text</u></string>
et dans votre activité / fragment
mTextView.setText(R.string.your_string);
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.
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):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-10dp"
android:left="-10dp"
android:right="-10dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="2dp"
android:color="#3498db"/>
</shape>
</item>
</layer-list>
Créez un nouveau style:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Ensuite, utilisez ce style sur votre TextView:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
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.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myTextView"
android:layout_width="20dp"
android:layout_height="wrap_content"/>
<View
android:layout_width="20dp"
android:layout_height="1dp"
android:layout_below="@+id/myTextView"
android:background="#CCCCCC"/>
</RelativeLayout>
Une solution simple et durable consiste à créer une liste de calques et à en faire l'arrière-plan de votre TextView:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-5dp"
android:right="-5dp"
android:top="-5dp">
<shape>
<stroke
android:width="1.5dp"
android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>
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.
`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>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
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`