Comment définir un texte souligné dans un fichier xml
de mise en page Android ?
C'est possible si vous utilisez un fichier xml string resource, qui prend en charge les balises HTML comme <b></b>
, <i></i>
et <u></u>
.
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Si vous voulez souligner quelque chose dans le code, utilisez :
TextView textView = (TextView) view.findViewById(R.id.textview);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
textView.setText(content);
La réponse "acceptée" ci-dessus ne fonctionne PAS (lorsque vous essayez d'utiliser la chaîne comme "textView.setText(Html.fromHtml(String.format(getString(...), ...)))`.
Comme indiqué dans les [documentations][1], vous devez échapper les parenthèses ouvrantes des balises internes (codées par l'entité html) avec <
, par exemple, le résultat devrait ressembler à ceci :
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Ensuite, dans votre code, vous pouvez définir le texte avec :
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(String.format(getString(R.string.my_string), ...)));
[1] : http://developer.android.com/guide/topics/resources/string-resource.html
Contenu du fichier Strings.xml :
<resource>
<string name="my_text">This is an <u>underline</u>.</string>
</resources>
Le fichier xml de mise en page doit utiliser la ressource string ci-dessus avec les propriétés de textview ci-dessous, comme indiqué ci-dessous :
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/my_text"
android:selectAllOnFocus="false"
android:linksClickable="false"
android:autoLink="all"
/>