Ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, Text in einem App-Widget in Android zu finden. Bei einer normalen Aktivität ist es ziemlich einfach, Textansichtsflags zu verwenden:
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Aber da ich in einem App-Widget nur Remoteviews verwenden kann ... weiß ich nicht, ob dies möglich ist
Weiß jemand etwas darüber?
Vielen Dank!
android
widget
textview
strikethrough
Antonio
quelle
quelle
xml-only
Lösung wie mich wollen: stackoverflow.com/a/49062515/3579786Antworten:
Sie können dies verwenden:
Natürlich können Sie auch andere Flags aus der android.graphics.Paint-Klasse hinzufügen.
quelle
Programmgesteuert in einer Textansicht, in anderen Ansichten nicht getestet >>
quelle
Ein anderer Weg, dies programmgesteuert zu tun, der ein bisschen weniger wie ein Hack aussieht als der Paint-Weg:
Anstatt zu tun:
machen:
quelle
RemoteView
Update 2015: Leute, dies ist für sehr alte Versionen von Android. Sehen Sie andere Antworten für moderne Lösungen!
Um die gesamte Textansicht zu durchlaufen, können Sie ein bestimmtes Hintergrundbild verwenden, um den Durchgestrichen-Effekt zu simulieren:
Wo das
bg_strikethrough
Drawable ein 9-Patch ist, der eine durchgezogene Linie durch die Mitte hält und auf beiden Seiten wächst, mit so viel Polsterung, wie Sie für angemessen halten. Ich habe eine davon verwendet:(zur Verdeutlichung vergrößert .. 1300%!)
Das ist meine HDPI-Version. Speichern Sie sie also (die erste http://i.stack.imgur.com/nt6BK.png ) als
res/drawable-hdpi/bg_strikethrough.9.png
und die Konfiguration funktioniert wie folgt:quelle
Dazu können Sie dies verwenden
und zum Entfernen können Sie dies verwenden
quelle
Wenn Sie ein einzelnes Wort haben, können wir Drawable verwenden. Es folgt das Beispiel:
Wenn Sie mehrere Zeilen haben, können Sie den folgenden Code verwenden:
quelle
Hier ist eine Erweiterung für alle Kotlin-Leute
Verwendung
Einschränkung
Durchgestrichene können nur die gleiche Farbe wie der Text haben
(dh roter Text und blaues Durchstreichen sind nicht möglich)
quelle
Für mehrzeiliges TextView sollten Sie android.text.style.CharacterStyle wie folgt verwenden:
quelle
Es ist wirklich einfach, wenn Sie Zeichenfolgen verwenden:
Und dann einfach:
quelle
Fügen Sie die folgende Zeile hinzu: -
Verwenden Sie Ihre Referenz anstelle von "tv"
quelle
Versuchen Sie diesen Code
quelle
Für Lollipop und höher. Erstellen Sie ein Drawable
und benutze es als Vordergrund.
android:foreground="@drawable/strike_through"
quelle
Sie fügen hinzu:
Sie setzen / fügen in Sie Variable hinzu:
und fügen Sie dann .setPaintFlags in variableTv hinzu:
quelle
Ich habe einige Optionen ausprobiert, aber das funktioniert am besten für mich:
Prost
quelle
Android-Ressourcen unterstützen HTML-Markups ziemlich gut
Die folgenden HTML-Elemente werden unterstützt:
Beachten Sie jedoch, dass es nicht in der Vorschau von Android Studio-Layouts gerendert wird. Zuletzt getestet auf Android Studio 3.3.1
Zum Beispiel sieht der Durchgestrichene so aus:
quelle
Ich habe dies regelmäßig (lokal) gemacht
TextView
, und es sollte auf der Remote-Variante funktionieren, da in den Dokumenten die Methode als äquivalent zwischen den beiden aufgeführt ist:remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));
quelle
<del>
nicht von unterstützt wirdHtml.fromHtml()
. Hast du es versucht<strike>
oder<s>
?Ich weiß, ich beantworte eine alte Frage, es könnte für jemand anderen hilfreich sein, einen bestimmten Teil von TextView programmgesteuert hervorzuheben.
In diesem Beispielcode ist 5 die Startposition und 8 die Endposition des Textes, die gestrichen werden müssen. Nach dem Ausführen dieses Codes können wir den Text "brauchen" mit durchgestrichenem Code erhalten. Hoffe, es wird für jemand anderen hilfreich sein.
quelle