Я хочу зробити підкреслення під моїм TextView. Я шукав декілька вмісту, але не зміг дізнатися нічого плідного.
Чи хтось, будь ласка, допоможе мені тут?
Я хочу зробити підкреслення під моїм TextView. Я шукав декілька вмісту, але не зміг дізнатися нічого плідного.
Чи хтось, будь ласка, допоможе мені тут?
Відповіді:
Існує три способи підкреслення тексту в TextView.
Дозвольте пояснити вам усі підходи:
1-й підхід
Для підкреслення тексту в TextView ви повинні використовувати SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
2-й підхід
Ви можете використовувати метод setPaintFlags TextView, щоб підкреслити текст TextView.
Наприклад, наприклад.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
Ви можете посилатися на константи класу Paint, якщо хочете закреслити текст.
3-й підхід
Використовувати Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
АБО
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Html.fromHtml("<u>This text will be underlined</u>"), але я повинен визнати, що я набагато більший шанувальник використання SpannableStrings. @Kartik: Ви також можете використовувати StrikethroughSpanтекст у тексті, щоб створити закреслений ефект. :)
просто обведіть текст тегом <u> у файлі ресурсу string.xml
<string name="your_string"><u>Underlined text</u></string>
і у вашій діяльності / фрагменті
mTextView.setText(R.string.your_string);
textView.setText(getString(R.string.text)) <- неправильно . Правильно: textView.setText(getText(R.string.text)) або просто textView.setText(R.string.text). Причина beind це , що getText()повертається Spannableз підкресленням прольотів, але якщо ви використовуєте getString()це буде конвертувати Spannableв Stringрезультаті прольотів видаляються.
Для тих, хто ще дивиться на цей запит. Це для гіперпосилання, але ви можете змінити його лише для простого підкреслення:
Створіть рисунок (гіперпосилання_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>
Створіть новий стиль:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Потім використовуйте цей стиль у своєму TextView:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
Якщо ваш 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>
Просте і стійке рішення - створити список шарів і зробити його фоном вашого 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 дивовижних способів підкреслити TextView в Android - Kotlin / Java & XML
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));Але Html.fromHtml (String-ресурс) був застарілий в API 24.
Таким чином, ви можете використовувати найновішу бібліотеку підтримки для androidx.core.text.HtmlCompat для Android . Перед цим потрібно включити залежність у свій проект.
`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));Використовуючи 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));
за допомогою PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
textview2.setText("2. Underline using setPaintFlags()");за допомогою SpannableString
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`