Jak zdefiniować podkreślony tekst w xml
pliku układu Androida ?
android
android-layout
fonts
Janusz
źródło
źródło
Odpowiedzi:
Można to osiągnąć, jeśli używasz zasobów ciąg plik XML, który obsługuje znaczniki HTML jak
<b></b>
,<i></i>
i<u></u>
.Jeśli chcesz podkreślić coś z kodu użyj:
źródło
<u>
tagów nie działa, np. Czasami, gdy używasz niestandardowej czcionki. Jednak programowe bazowanie przezUnderlineSpan
jeszcze mnie nie zawiodło, dlatego poleciłbym to jako najbardziej niezawodne rozwiązanie.Możesz spróbować
źródło
| Paint.ANTI_ALIAS_FLAG
tekst był bardzo ostry. Przejawia się to w niższych interfejsach API częściej niż nie.textView.paintFlags = textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
Powyższa „zaakceptowana” odpowiedź NIE działa (przy próbie użycia ciągu jak
textView.setText(Html.fromHtml(String.format(getString(...), ...)))
.Jak stwierdzono w dokumentacji , musisz uciec (zakodowany w postaci encji HTML) otwierający nawias klamrami wewnętrznymi
<
, np. Wynik powinien wyglądać następująco:Następnie w kodzie możesz ustawić tekst za pomocą:
źródło
Zawartość pliku Strings.xml:
Układ pliku XML podzielonego na fragmenty użyj powyższego zasobu ciągu z poniższymi właściwościami widoku tekstu, jak pokazano poniżej:
źródło
W przypadku Button i TextView jest to najprostszy sposób:
Przycisk:
Widok tekstu:
źródło
Rozwiązanie jednoliniowe
myTextView.setText(Html.fromHtml("<p><u>I am Underlined text</u></p>"));
Jest trochę późno, ale może być dla kogoś przydatny.
źródło
W Kotlinie można zastosować funkcję rozszerzenia . Można tego używać tylko z kodu, a nie xml.
Stosowanie:
źródło
sprawdź podkreślony styl klikalnego przycisku:
strings.xml:
Wynik:
źródło
Najnowsze podejście do rysowania podkreślonego tekstu opisuje Romain Guy na nośniku z dostępnym kodem źródłowym na GitHub . Ta przykładowa aplikacja udostępnia dwie możliwe implementacje:
źródło
Wiem, że to późna odpowiedź, ale wymyśliłem rozwiązanie, które działa całkiem dobrze ... Wziąłem odpowiedź Anthony'ego Forloneya za podkreślenie tekstu w kodzie i stworzyłem podklasę TextView, która to obsługuje. Następnie możesz po prostu użyć podklasy w XML, kiedy tylko chcesz mieć podkreślony TextView.
Oto klasa, którą stworzyłem:
Teraz ... ilekroć chcesz utworzyć podkreślony widok tekstu w XML, po prostu wykonaj następujące czynności:
Dodałem dodatkowe opcje w tym fragmencie kodu XML, aby pokazać, że mój przykład działa ze zmianą koloru, rozmiaru i stylu tekstu ...
Mam nadzieję że to pomoże!
źródło
Czystszym sposobem zamiast
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
metody jest użycietextView.getPaint().setUnderlineText(true);
A jeśli chcesz później wyłączyć podkreślenie dla tego widoku, na przykład w widoku ponownie używanym w RecyclerView,
textView.getPaint().setUnderlineText(false);
źródło
Wystarczy użyć atrybutu w pliku zasobów ciągów np
źródło
Użyłem tego xml drawable do stworzenia dolnej granicy i zastosowałem drawable jako tło do mojego widoku tekstu
źródło
Proste i elastyczne rozwiązanie w XML:
źródło
innym rozwiązaniem jest utworzenie niestandardowego widoku, który rozszerza TextView, jak pokazano poniżej
i po prostu dodaj do xml, jak pokazano poniżej
źródło
Upraszczam odpowiedź Samuela :
źródło
Z łatwością stworzyłem tę metodę
Podkreśl cały TextView
Podkreśl jakąś część TextView
sprawdź moją odpowiedź tutaj, aby zaznaczyć klikalny tekst lub podkreślić wiele części TextView
źródło
wypróbuj ten kod
w XML
W kodzie
Powodzenia!
źródło
Ponadto poniższy kod nie wydrukuje podkreślenia:
Zamiast tego użyj następującego kodu, aby zachować format tekstu sformatowanego:
„Do pobrania ciągu można użyć getString (int) lub getText (int). GetText (int) zachowuje wszelkie style tekstu sformatowanego zastosowane do łańcucha.” Dokumentacja Androida.
Zapoznaj się z dokumentacją: https://developer.android.com/guide/topics/resources/string-resource.html
Mam nadzieję, że to pomoże.
źródło
Najwyżej głosowana odpowiedź jest właściwa i najprostsza. Czasami jednak może się okazać, że nie działa w przypadku niektórych czcionek, ale działa w przypadku innych. (Na jaki problem natknąłem się podczas pracy z chińskim).
Rozwiązaniem nie jest użycie „WRAP_CONTENT” tylko dla TextView, ponieważ nie ma dodatkowej przestrzeni do rysowania linii. Możesz ustawić stałą wysokość na TextView lub użyć Androida: paddingVertical z WRAP_CONTENT.
źródło
Zwróć uwagę na symbol Escape w pliku xml
źródło
Aby to zrobić w Kotlin:
yourTextView.paint?.isUnderlineText = true
źródło
Jest dość późno, aby odpowiedzieć na to pytanie, ale załóżmy, że jeśli ktoś chce dynamicznie uzyskać tekst, może użyć tego prostego jednego wiersza w kodzie Java, który działa:
źródło
Miałem problem polegający na tym, że używam niestandardowej czcionki, a podkreślenie utworzone za pomocą pliku zasobów trick (
<u>Underlined text</u>
) działało, ale Android zdołał przekształcić podkreślenie w rodzaj korytarza uderzenia.Skorzystałem z tej odpowiedzi, aby sam narysować ramkę poniżej widoku tekstu: https://stackoverflow.com/a/10732993/664449 . Oczywiście nie działa to w przypadku tekstu częściowo podkreślonego lub tekstu wielowarstwowego.
źródło