Как мога да дефинирам подчертан текст във файл xml
за оформление на Android?
Това може да се постигне, ако използвате xml файл string resource, който поддържа HTML тагове като <b></b>
, <i></i>
и <u></u>
.
<resources>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
Ако искате да подчертаете нещо от кода, използвайте:
TextView textView = (TextView) view.findViewById(R.id.textview);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
textView.setText(content);
Отговорът "приет" по-горе не работи (когато се опитате да използвате низ като textView.setText(Html.fromHtml(String.format(getString(...), ...)))
.
Както е посочено в documentations, трябва да евакуирате (кодирана в html същност) отварящата скоба на вътрешните тагове с <
, например резултатът трябва да изглежда така:
<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
След това в кода си можете да зададете текста с:
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(String.format(getString(R.string.my_string), ...)));
Съдържание на файла Strings.xml:
<resource>
<string name="my_text">This is an <u>underline</u>.</string>
</resources>
Файлът Layout xml трябва да използва горепосочения ресурс от низове с посочените по-долу свойства на текстовия изглед, както е показано по-долу:
<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"
/>