Je sais que c'est si facile (doh ...) mais je cherche un moyen d'exécuter une méthode en appuyant ou en cliquant sur une ligne de texte TextView dans une application Android.
Je continue de penser aux écouteurs de boutons et aux appels d'écouteurs de méthodes anonymes, mais cela ne semble tout simplement pas s'appliquer à TextView.
Quelqu'un peut-il me pointer vers un extrait de code pour montrer comment cliquer ou appuyer sur un morceau de texte dans une TextView exécute une méthode?
TextView
- link.medium.com/TLq6s8ltc3Réponses:
Vous pouvez définir le gestionnaire de clics en xml avec ces attributs:
N'oubliez pas l'attribut cliquable, sans lui, le gestionnaire de clics n'est pas appelé.
main.xml
MyActivity.java
la source
setOnClickListener
définit l'clickable
attribut, mais l'utilisation de l'onClick
attribut ne le fait apparemment pas.onClick
cela définisse l'clickable
attribut dans Android 5.0 Lollipop (API 21). Peut-être qu'ils considéraient comme un bug que cela ne se produisait pas dans les anciennes versions?Ce n'est peut-être pas tout à fait ce que vous recherchez, mais c'est ce qui a fonctionné pour ce que je fais. Tout cela est après mon
onCreate
:la source
OK, j'ai répondu à ma propre question (mais est-ce la meilleure façon?)
Voici comment exécuter une méthode lorsque vous cliquez ou appuyez sur du texte dans TextView:
et mon main.xml est:
la source
depuis l'intérieur d'une activité qui appelle une mise en page et une vue de texte, cet écouteur de clics fonctionne:
la vue texte est déclarée comme ceci (assistant par défaut):
et dans le fichier strings.xml
la source
Bien que vous puissiez résoudre le problème en définissant l'écouteur sur TextView, il est recommandé de ne pas le faire. Vous devez utiliser le bouton plat car il s'agit d'une sous-classe de Button et il fournit de nombreux attributs que TextView ne fournit pas.
Pour utiliser le bouton plat, ajoutez un
style="?android:attr/borderlessButtonStyle"
attribut -la source
dans textView
Vous devez également implémenter View.OnClickListener et dans la méthode On Click peut utiliser l'intention
J'ai testé cette solution fonctionne bien.
la source
Pour cliquer sur une partie du texte (pas sur la totalité
TextView
), vous pouvez utiliserHtml
ouLinkify
(les deux créent des liens qui ouvrent des URL, cependant, pas un rappel dans l'application).Linkify
Utilisez une ressource de chaîne comme:
Puis dans une vue texte:
Html
En utilisant
Html.fromHtml
:Puis dans votre affichage de texte:
la source
Vous pouvez utiliser TextWatcher pour TextView, est plus flexible que ClickLinstener (ni meilleur ni pire, seulement plus dans un sens).
la source