Comment souligner un texte dans un fichier XML? Je ne trouve pas d'option dans textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
Comment souligner un texte dans un fichier XML? Je ne trouve pas d'option dans textStyle
.
textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
Réponses:
Si vous utilisez un fichier xml de ressource de chaîne (prend en charge les balises HTML), vous pouvez le faire en utilisant <b> </b>
, <i> </i>
et <u> </u>
.
<resources>
<string name="your_string_here">
This is an <u>underline</u>.
</string>
</resources>
Si vous souhaitez souligner quelque chose à partir du code, utilisez:
TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);
J'espère que cela t'aides
<u>
balises sous-jacentes ne fonctionnaient pas, par exemple parfois si vous utilisez une police personnalisée. Cependant, sous-jacent programmatiquement par UnderlineSpan
n'a en effet jamais échoué sur moi, je le recommanderais donc comme la solution la plus fiable.
<u>
et <\u>
en XML, et c'est suffisant.
Utilisez ceci:
TextView txt = (TextView) findViewById(R.id.Textview1);
txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
UnderlineSpan
.
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Si cela ne fonctionne pas alors
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
Parce que "<" peut être un mot clé à un moment donné.
Et pour afficher
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));
Tout d'abord, accédez au fichier String.xml
vous pouvez ajouter des attributs HTML comme, italique ou gras ou souligner ici.
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Une autre façon de le faire consiste à créer un composant personnalisé étendant TextView. C'est bon pour les cas où vous devez avoir plusieurs TextViews soulignés.
Voici le code du composant:
package com.myapp.components;
import android.content.Context;
import android.support.v7.widget.AppCompatTextView;
import android.text.SpannableString;
import android.text.style.UnderlineSpan;
import android.util.AttributeSet;
public class LinkTextView extends AppCompatTextView {
public LinkTextView(Context context) {
this(context, null);
}
public LinkTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setText(CharSequence text, BufferType type) {
SpannableString content = new SpannableString(text);
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
super.setText(content, type);
}
}
Et comment l'utiliser en xml:
<com.myapp.components.LinkTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
Pour compléter la réponse de Bhavin. Par exemple, pour ajouter un soulignement ou une redirection.
((TextView) findViewById(R.id.tv_cgu)).setText(Html.fromHtml(getString(R.string.upload_poi_CGU)));
<string name="upload_poi_CGU"><![CDATA[ J\'accepte les <a href="">conditions générales</a>]]></string>
et vous pouvez connaître les balises compatibles ici: http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html
Vous pouvez utiliser le balisage ci-dessous, mais notez que si vous définissez le textAllCaps
sur, true
l'effet de soulignement sera supprimé.
<resource>
<string name="my_string_value">I am <u>underlined</u>.</string>
</resources>
Remarque
Utilisation de textAllCaps avec une chaîne (login_change_settings) qui contient du balisage; le balisage sera supprimé par la conversion des majuscules
La transformation de texte textAllCaps finira par appeler toString sur la CharSequence, ce qui a pour effet net de supprimer tout balisage tel que. Cette vérification recherche les utilisations des chaînes contenant du balisage qui spécifient également textAllCaps = true.
Il existe différentes manières d'obtenir du texte souligné dans un TextView Android.
1. <u>This is my underlined text</u>
ou
I just want to underline <u>this</u> word
2. Vous pouvez faire la même chose par programmation.
`textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);`
Cela peut être fait en créant un SpannableString, puis en le définissant comme propriété de texte TextView
SpannableString text = new SpannableString("Voglio sottolineare solo questa parola");
text.setSpan(new UnderlineSpan(), 25, 6, 0);
textView.setText(text);
J'ai utilisé la méthode ci-dessous, cela a fonctionné pour moi. Ci-dessous, un exemple pour Button, mais nous pouvons également l'utiliser dans TextView.
Button btnClickMe = (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Si vous souhaitez comparer la chaîne de texte ou le texte changera dynamiquement, vous pouvez créer une vue dans la mise en page Contrainte, elle s'ajustera en fonction de la longueur du texte comme ceci
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txt_Previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="8dp"
android:gravity="center"
android:text="Last Month Rankings"
android:textColor="@color/colorBlue"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<View
android:layout_width="0dp"
android:layout_height="0.7dp"
android:background="@color/colorBlue"
app:layout_constraintEnd_toEndOf="@+id/txt_Previous"
app:layout_constraintStart_toStartOf="@+id/txt_Previous"
app:layout_constraintBottom_toBottomOf="@id/txt_Previous"/>
</android.support.constraint.ConstraintLayout>
public void setUnderLineText(TextView tv, String textToUnderLine) {
String tvt = tv.getText().toString();
int ofe = tvt.indexOf(textToUnderLine, 0);
UnderlineSpan underlineSpan = new UnderlineSpan();
SpannableString wordToSpan = new SpannableString(tv.getText());
for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
ofe = tvt.indexOf(textToUnderLine, ofs);
if (ofe == -1)
break;
else {
wordToSpan.setSpan(underlineSpan, ofe, ofe + textToUnderLine.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(wordToSpan, TextView.BufferType.SPANNABLE);
}
}
}
TextView tv = findViewById(R.id.tv);
tv.setText("some text");
setUnderLineText(tv, "some");
Prend également en charge les enfants TextView comme EditText, Button, Checkbox
Si tu veux
- Texte de soulignement cliquable?
- Souligner plusieurs parties de TextView?
Ensuite, vérifiez cette réponse
style="text-decoration: underline;"