Miło mi to słyszeć… Oznacz to pytanie jako rozwiązane, aby inni użytkownicy mogli je polecić.
Kartik Domadiya
4
Html.fromHtml("<u>This text will be underlined</u>")Przydałoby się trzecie podejście , ale muszę przyznać, że jestem znacznie większym fanem używania SpannableStrings. @Kartik: Równie dobrze możesz użyć znaku StrikethroughSpanw tekście, aby stworzyć efekt przekreślenia. :)
MH.
Uwielbiam trzecie podejście. Krótki, prosty i zwięzły oraz dodaje tylko jedną dodatkową linię kodu do mojego programu.
Matt,
Wiem, że to trochę stare, ale czy istnieje sposób na ustawienie grubości podkreślenia?
Andreas Wong,
która z nich jest używana dla zawartości preferencjiActivity w kategorii PreferenceCategory?
programista Androida
40
po prostu otocz swój tekst znacznikiem <u> w pliku zasobów string.xml
@CHAKRAVARTHI to nie zadziała, jeśli przerzucisz tekst na ciąg przed ustawieniem. Np. textView.setText(getString(R.string.text))<- źle . Racja:textView.setText(getText(R.string.text)) lub po prostu textView.setText(R.string.text). Powodem beind to, że getText()wraca Spannablez podkreślają przęseł, ale jeśli używasz getString()to przekonwertować Spannabledo Stringwynikających przęseł zostanie usunięty.
Yaroslav Mytkalyk
Słuszna uwaga! Zredagowałem moją obecną odpowiedź, aby była bardziej przejrzysta
Jeśli Twój TextView ma stałą szerokość, alternatywnym rozwiązaniem może być utworzenie widoku, który będzie wyglądał jak podkreślenie i umieszczenie go bezpośrednio pod TextView.
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Ale Html.fromHtml (zasób String) został wycofany w API 24.
Możesz więc skorzystać z najnowszej biblioteki obsługi Androida androidx.core.text.HtmlCompat . Wcześniej musisz uwzględnić zależność w swoim projekcie.
`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));
Używając strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
Odpowiedzi:
Istnieją trzy sposoby podkreślania tekstu w TextView.
SpannableString
setPaintFlags (); TextView
Html.fromHtml ();
Pozwól, że wyjaśnię ci wszystkie podejścia:
Podejście 1
Aby podświetlić tekst w TextView, musisz użyć SpannableString
Podejście 2
Możesz skorzystać z metody setPaintFlags TextView , aby podkreślić tekst TextView.
Np.
Możesz odwołać się do stałych klasy Paint, jeśli chcesz przekreślić tekst.
Trzecie podejście
Zrobić użytek z
Html.fromHtml(htmlString);
LUB
źródło
Html.fromHtml("<u>This text will be underlined</u>")
Przydałoby się trzecie podejście , ale muszę przyznać, że jestem znacznie większym fanem używania SpannableStrings. @Kartik: Równie dobrze możesz użyć znakuStrikethroughSpan
w tekście, aby stworzyć efekt przekreślenia. :)po prostu otocz swój tekst znacznikiem <u> w pliku zasobów string.xml
oraz w swojej aktywności / fragmencie
źródło
textView.setText(getString(R.string.text))
<- źle . Racja:textView.setText(getText(R.string.text))
lub po prostutextView.setText(R.string.text)
. Powodem beind to, żegetText()
wracaSpannable
z podkreślają przęseł, ale jeśli używaszgetString()
to przekonwertowaćSpannable
doString
wynikających przęseł zostanie usunięty.U mnie to działa.
źródło
Dla każdego, kto wciąż patrzy na to pytanie. To jest dla hiperłącza, ale możesz je zmodyfikować, aby uzyskać zwykłe podkreślenie:
Utwórz do rysowania (hyperlink_underline.xml):
Utwórz nowy styl:
Następnie użyj tego stylu w swoim TextView:
źródło
Jeśli Twój TextView ma stałą szerokość, alternatywnym rozwiązaniem może być utworzenie widoku, który będzie wyglądał jak podkreślenie i umieszczenie go bezpośrednio pod TextView.
źródło
Prostym i trwałym rozwiązaniem jest utworzenie listy warstw i ustawienie jej jako tła dla TextView:
źródło
5 niesamowitych sposobów podkreślenia TextView w Androidzie - Kotlin / Java i XML
String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));
Ale Html.fromHtml (zasób String) został wycofany w API 24.
Możesz więc skorzystać z najnowszej biblioteki obsługi Androida androidx.core.text.HtmlCompat . Wcześniej musisz uwzględnić zależność w swoim projekcie.
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));
Używając 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));
używając PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); textview2.setText("2. Underline using setPaintFlags()");
przy użyciu SpannableString
źródło