Ich weiß, dass dies so einfach ist (doh ...), aber ich suche nach einer Möglichkeit, eine Methode zum Tippen oder Klicken auf eine TextView-Textzeile in einer Android-App auszuführen.
Ich denke immer an Button-Listener und anonyme Methoden-Listener-Aufrufe, aber es scheint einfach nicht auf TextView zuzutreffen.
Kann mich jemand auf ein Codefragment verweisen, um zu zeigen, wie das Klicken oder Tippen auf einen Text in einer Textansicht eine Methode ausführt?
TextView
- link.medium.com/TLq6s8ltc3Antworten:
Sie können den Klick-Handler in XML mit folgendem Attribut festlegen:
Vergessen Sie nicht das anklickbare Attribut, ohne das der Click-Handler nicht aufgerufen wird.
main.xml
MyActivity.java
quelle
setOnClickListener
dasclickable
Attribut, aber dasonClick
Attribut anscheinend nicht.onClick
nicht gesetzt dasclickable
Attribut in Android 5.0 Lollipop (API 21). Vielleicht hielten sie es für einen Fehler, dass dies in älteren Versionen nicht passiert ist?Das ist vielleicht nicht ganz das, wonach Sie suchen, aber das hat für das funktioniert, was ich tue. All dies ist nach meinem
onCreate
:quelle
OK, ich habe meine eigene Frage beantwortet (aber ist es der beste Weg?)
So führen Sie eine Methode aus, wenn Sie in einer Textansicht auf Text klicken oder darauf tippen:
und meine main.xml ist:
quelle
In einer Aktivität, die ein Layout und eine Textansicht aufruft, funktioniert dieser Klick-Listener wie folgt:
Die Textansicht wird wie folgt deklariert (Standardassistent):
und in der Datei strings.xml
quelle
Obwohl Sie das Problem beheben können, indem Sie den Listener auf Textansicht einstellen, wird empfohlen, dies nicht zu tun. Sie sollten die flache Schaltfläche verwenden, da es sich um eine Unterklasse von Schaltflächen handelt und viele Attribute enthält, die TextView nicht bietet.
Um die flache Schaltfläche zu verwenden, fügen Sie das
style="?android:attr/borderlessButtonStyle"
Attribut hinzu -quelle
in textView
Sie müssen auch View.OnClickListener implementieren und in der On Click-Methode die Absicht verwenden
Ich habe getestet, dass diese Lösung gut funktioniert.
quelle
Um auf einen Teil des Textes (nicht auf den gesamten Text
TextView
) zu klicken , können SieHtml
oder verwendenLinkify
(beide erstellen Links, die URLs öffnen, jedoch keinen Rückruf in der App).Linkify
Verwenden Sie eine Zeichenfolgenressource wie:
Dann in einer Textansicht:
Html
Verwenden von
Html.fromHtml
:Dann in Ihrer Textansicht:
quelle
Sie können TextWatcher für TextView verwenden, es ist flexibler als ClickLinstener (nicht am besten oder schlechter, nur mehr in eine Richtung).
quelle