Ich habe den Text " Android ist ein Software-Stack ". In diesem Text möchte ich festlegen, dass der " Stapel " -Text anklickbar ist. In dem Sinne, wenn Sie darauf klicken, wird es zu einer neuen Aktivität umgeleitet (nicht im Browser).
Ich habe es versucht, aber ich bekomme es nicht.
android
string
textview
clickablespan
Naresh
quelle
quelle
Antworten:
android.text.style.ClickableSpan
kann Ihr Problem lösen.In XML:
quelle
ForegroundColorSpan fcs = new ForegroundColorSpan(Color.BLUE); ss.setSpan(fcs, 22, 27, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
ForegroundColorSpan
ein,setSpan
nachdem Sie die anklickbare Spanne festgelegt haben. Wenn Sie den Vordergrund vor die klickbare Spanne stellen, wird die neue Farbe nicht wiedergegeben.Meine Funktion zum Erstellen mehrerer Links im Inneren
TextView
VERWENDUNG
XML
DEMO
Referenz
Die Lösung zum Löschen der Link-Hervorhebungsauswahl lautet https://stackoverflow.com/a/19445108/5381331
quelle
Sie können ClickableSpan wie in diesem Beitrag beschrieben verwenden
Beispielcode:
Referenz
quelle
startIndex
undendIndex
Logik.Sie können Beispielcode verwenden. Sie möchten mehr über ClickableSpan erfahren. Bitte überprüfen Sie diese Dokumentation
quelle
Ich habe diese Hilfsmethode für den Fall erstellt, dass jemand eine Start- und Endposition von einem String benötigt.
Und so verwenden Sie es
quelle
quelle
Hier ist eine
Kotlin
Methode, um Teile einesTextView
anklickbaren zu machen :Es kann mehrmals aufgerufen werden, um mehrere Links in einer Textansicht zu erstellen:
quelle
Kotlin-Version von Phan Van Linhs Antwort.
Bitte beachten Sie, dass es einige geringfügige Änderungen gibt.
quelle
Für fett,
quelle
Ich würde einen anderen Ansatz vorschlagen, der meiner Meinung nach weniger Code erfordert und "lokalisierungsfreundlicher" ist.
Angenommen, Ihre Zielaktivität heißt "ActivityStack", definieren Sie im Manifest einen Absichtsfilter dafür mit einem benutzerdefinierten Schema (z. B. "myappscheme") in AndroidManifest.xml:
Definieren Sie die Textansicht ohne ein spezielles Tag (es ist wichtig, das Tag "android: autoLink" NICHT zu verwenden, siehe: https://stackoverflow.com/a/20647011/1699702 ):
Verwenden Sie dann einen Link mit benutzerdefiniertem Schema und Host im Text der Textansicht als (in String.xml):
und "aktivieren" Sie den Link mit setMovementMethod () (in onCreate () für Aktivitäten oder onCreateView () für Fragmente):
Dadurch wird die Stapelaktivität durch Tippen auf das Wort "Stapel" geöffnet.
quelle
Mit dieser Methode können Sie den anklickbaren Wert festlegen
So verwenden Sie es:
quelle
Dies ist meine
MovementMethod
zum Erkennen von Link- / Text- / Bildklicks. Es ist modifiziertLinkMovementMethod
.quelle
allgemeinere Antwort in Kotlin
quelle
Um einen verknüpften Text in eine Textansicht einzufügen, können Sie das folgende Beispiel für eine Zeichenfolgenressource "footer_text" verwenden und Ihre onCreate-Methode für Ihre Aktivität bearbeiten. Sie können das folgende Beispiel verwenden
string.xml
MainActivity.java
quelle
Die angebotenen Lösungen sind ziemlich anständig. Im Allgemeinen verwende ich jedoch eine einfachere Lösung.
Hier ist eine Linkify-Dienstprogrammfunktion
Die Verwendung dieser Funktion ist ziemlich einfach. Hier ist ein Beispiel
quelle
Ich habe ein Beispiel codiert, um Ihre Frage in Kotlin zu lösen.
Dies ist der Code:
Dies ist das XML
So sieht es aus
Geben Sie hier die Bildbeschreibung ein
quelle
Es ist sehr hilfreich für den anklickbaren Teil für einen Teil des Textes.
Der Punkt ist ein Sonderzeichen im regulären Ausdruck. Wenn Sie überspannen möchten, muss der Punkt als Punkt maskiert werden
\\
. anstatt nur ".
" an die spanbare Textmethode zu übergeben. Alternativ können Sie auch den regulären Ausdruck verwenden[.]
, um den String in Java durch einen Punkt zu überspannen.quelle