Zastanawiałem się, czy istnieje łatwy sposób na wykreślenie tekstu w widżecie aplikacji na Androida. W normalnej aktywności jest to całkiem proste, używając flag Textview:
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Ale ponieważ w widżecie aplikacji mogę używać tylko zdalnych podglądów ... Nie wiem, czy to jest możliwe
Czy ktoś coś o tym wie?
Dzięki!
android
widget
textview
strikethrough
Antonio
źródło
źródło
xml-only
rozwiązania takiego jak ja: stackoverflow.com/a/49062515/3579786Odpowiedzi:
Możesz użyć tego:
Oczywiście możesz także dodać inne flagi z klasy android.graphics.Paint.
źródło
Aby zrobić to programowo w widoku tekstowym, niesprawdzonym w innych widokach >>
źródło
Inny sposób na zrobienie tego programowo, który wygląda trochę mniej jak hack niż sposób Paint:
Zamiast robić:
robić:
źródło
RemoteView
Aktualizacja 2015: ludzie, to jest dla bardzo starych wersji Androida. Zobacz inne odpowiedzi na nowoczesne rozwiązania!
Aby przekreślić cały widok tekstu, możesz użyć określonego obrazu tła, aby zasymulować efekt przekreślenia:
Tam, gdzie można
bg_strikethrough
wyciągnąć, jest 9-łatka, która utrzymuje ciągłą linię przez środek, rosnącą po obu stronach, z tak dużą wyściółką, jaką uważasz za rozsądną. Użyłem takiego:(powiększony dla przejrzystości .. 1300%!)
To jest moja wersja HDPI, więc zapisz ją (pierwszą http://i.stack.imgur.com/nt6BK.png ) jako,
res/drawable-hdpi/bg_strikethrough.9.png
a konfiguracja będzie działać tak:źródło
Aby to zrobić, możesz tego użyć
i do usunięcia możesz tego użyć
źródło
Jeśli masz jedno słowo, możemy użyć do rysowania. Oto przykład:
jeśli masz wiele linii, możesz użyć następującego kodu:
źródło
Oto rozszerzenie dla wszystkich ludzi z Kotlin
Stosowanie
Ograniczenie
Przekreślenia mogą mieć tylko ten sam kolor co tekst
(tj. czerwony tekst i niebieskie przekreślenie nie są możliwe)
źródło
W przypadku wielowierszowego TextView należy użyć android.text.style.CharacterStyle w następujący sposób:
źródło
Jest to naprawdę proste, jeśli używasz ciągów:
A potem tylko:
źródło
Dodaj wiersz poniżej: -
użyj odniesienia zamiast „tv”
źródło
wypróbuj ten kod
źródło
Dla Lollipopa i nowszych. stworzyć drawable
i użyj go jako pierwszego planu.
android:foreground="@drawable/strike_through"
źródło
dodajesz:
ustawiasz / dodajesz w sobie zmienną:
a następnie dodaj .setPaintFlags w variableTv:
źródło
Wypróbowałem kilka opcji, ale to działa najlepiej dla mnie:
Twoje zdrowie
źródło
Zasoby Androida mają całkiem dobrą obsługę znaczników
HTML Obsługiwane są poniższe elementy HTML:
Należy jednak pamiętać, że nie jest renderowany w podglądzie układów Android Studio. Ostatnio testowane na Android Studio 3.3.1
Na przykład przekreślenie będzie wyglądać tak:
źródło
Zrobiłem to regularnie (lokalnie)
TextView
i powinno to działać na zdalnej odmianie, ponieważ dokumentacja podaje metodę jako równoważną między nimi:remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));
źródło
<del>
nie jest to obsługiwane przezHtml.fromHtml()
. Czy próbowałeś<strike>
lub<s>
?Wiem, odpowiadam na stare pytanie, może to być pomocne dla kogoś innego, aby programowo wykreślić określoną część TextView.
Tak więc w tym przykładzie kod 5 to pozycja początkowa, a 8 to pozycja końcowa tekstu, które należy wykreślić, więc po uruchomieniu tego kodu możemy uzyskać tekst „potrzeba” z przekreśleniem. Mam nadzieję, że będzie to pomocne dla kogoś innego.
źródło