Android: Einstellung onClickListener auf einen Teil von text in einem TextView - Problem
Ich versuche zu erkennen, hashtags in meiner TextView und anklickbar gemacht, so dass ich nehmen kann, den Benutzer auf eine andere Ansicht, wenn Sie klicken Sie auf den Hashtag.
Ich identifizieren konnte, Hashtags in die TextView mit Pattern-Matching und Sie farbig erscheinen in der Runtime. Allerdings muss ich machen das Hashtag klickbar.
Hier ist mein Code:
SpannableString hashText = new SpannableString("I just watched #StarWars and it was incredible. It's a #MustWatch #StarWars");
Matcher matcher = Pattern.compile("#([A-Za-z0-9_-]+)").matcher(hashText);
while (matcher.find())
{
hashText.setSpan(new ForegroundColorSpan(Color.parseColor("#000763")), matcher.start(), matcher.end(), 0);
String tag = matcher.group(0);
}
holder.caption.setText(hashText);
//I need to set an OnClick listener to all the Hashtags recognised
Verwenden die gleiche Lösung vor, wie kann ich onclick-Listener für jede hashtag?
- gibt es Bibliotheken gibt, um das gleiche zu tun, check this out : github.com/Danylo2006/HashTagHelper
- Sieht aus wie die Bibliothek ist nicht verfügbar für die minimale sdk 9 🙁
- versuchen einfügen die 2 java Dateien in Ihr Paket. (HashTagHelper und ClickableForegroundColorSpan)
Du musst angemeldet sein, um einen Kommentar abzugeben.
da ist auch ein Weg... nachdem ich Ihre Frage, ich war gerade googeln .. und ich fand dieses, ich hoffe es funktioniert...
1.
Sie können
android.text.style.ClickableSpan
linkanderen Weg.. link
Antwort nur kopiert diesen link...
Du kannst es ja machen, müssen Sie
ClickableSpan
mitSpannableString
fügen Sie diesen code in deine while-Schleife
Vergessen Sie nicht, setzen
setMovementMethod()
auf IhreTextView
Können Sie die Farbe ändern mit anklickbaren eine beliebige Taste(@,#) text von textview mit diesem code.Ich verwende dieses Format.Es funktioniert gut in meine Seite.
Bitte versuchen Sie es auf diese Weise hoffen Sie kann Ihr problem lösen.
//Habe Aber Ohne Pattern Match
Können Sie
android.text.style.ClickableSpan
für diese:Finden Sie Antwort
Können Sie erreichen es, indem Sie mit
split
Funktion, und füllen Sietextview's
imLayout
wie diese :und eine Methode, mit der click-Ereignis erforderlich
Textview's
:Ich hatte ähnliches problem - ich hatte zu tun, sth auf einen Teil des Textes geklickt, aber die Schnur war, die zur Laufzeit angelegt. Vielleicht hilft es ja jemand - in dieser Lösung wir kümmern uns nicht darum, indexStart, indexEnd im ganzen text (was sein kann ziemlich schrecklich), etc.: