Hoe kan ik onderstreepte tekst definiëren in een Android opmaak xml
bestand?
Dat kan als je een string resource xml-bestand gebruikt, dat HTML-tags als <b></b>
, <i></i>
en <u></u>
ondersteunt.
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Als je iets uit code wilt onderstrepen gebruik dan:
TextView textView = (TextView) view.findViewById(R.id.textview);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
textView.setText(content);
Het "accepted" antwoord hierboven werkt NIET (wanneer je de string probeert te gebruiken zoals textView.setText(Html.fromHtml(String.format(getString(...), ...))
.
Zoals aangegeven in de documentations moet je (html entity encoded) openings haakje van de binnen tags escapen met <
, bijv. resultaat zou er zo uit moeten zien:
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Dan kun je in je code de tekst zetten met:
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(String.format(getString(R.string.my_string), ...)));
Strings.xml bestand inhoud:
<resource>
<string name="my_text">This is an <u>underline</u>.</string>
</resources>
Layout xml bestand dient de bovenstaande string resource te gebruiken met onderstaande eigenschappen van textview, zoals hieronder getoond:
<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"
/>