1159 Stimmen

Wie man Links in einer TextView anklickbar macht

Ich habe die folgende TextView definiert:

<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="@string/txtCredits"
    android:autoLink="web" android:id="@+id/infoTxtCredits"
    android:layout_centerInParent="true"
    android:linksClickable="true"></TextView>

donde @string/txtCredits ist eine String-Ressource, die Folgendes enthält <a href="some site">Link text</a> .

Android hebt die Links in der TextView hervor, aber sie reagieren nicht auf Klicks. Was mache ich falsch? Muss ich einen onClickListener für die TextView in meiner Aktivität für etwas so Einfaches wie dies festlegen?

Es sieht so aus, als ob es mit der Art und Weise zu tun hat, wie ich meine String-Ressource definiere.

Das funktioniert nicht:

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

Aber das hier schon:

<string name="txtCredits">www.google.com</string>

Das ist schade, denn ich würde viel lieber einen Textlink anzeigen als die vollständige URL.

26voto

Ahmed Mostafa Punkte 379

Sie müssen dies nur in der Textansicht in XML hinzufügen:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:autoLink="web"/>

25voto

Keshav Gera Punkte 9684

Verwalten Sie auch die Linkify-Textfarbe

Enter image description here

tv_customer_care_no.setLinkTextColor(getResources().getColor(R.color.blue));
tv_customer_care_no.setText("For us to reach out to you, please fill the details below or contact our customer care at 18004190899 or visit our website http://www.dupont.co.in/corporate-links/contact-dupont.html");
Linkify.addLinks(tv_customer_care_no, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);
Linkify.addLinks(tv_customer_care_no, Linkify.ALL);

23voto

Rahul Raina Punkte 3121

Hier ist ein sehr einzeiliger Android-Code, um Telefon und URL aus textView auswählbar zu machen, egal, was die Zeichenfolge ist und was die Daten sind. Sie brauchen dafür keine HTML-Tags zu verwenden.

TextView textView = (TextView)findViewById(R.id.textView1);
textView.setText("some URL is www.google.com phone 7504567890 another URL lkgndflg.com ");

// Makes the textView's Phone and URL (hyperlink) select and go.
Linkify.addLinks(textView, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);

23voto

DeathRs Punkte 1070

Durch die Verwendung von linkify :

Linkify nimmt einen Text und einen regulären Ausdruck und verwandelt alle Regex-Übereinstimmungen im Text in klickbare Links:

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("http://example.com");
Linkify.addLinks(textView, Linkify.WEB_URLS);

Vergessen Sie nicht

import android.widget.TextView;

22voto

David Dimalanta Punkte 538

Richard, das nächste Mal sollten Sie diesen Code unter TextView im Layout XML stattdessen hinzufügen.

android:autoLink="all"

Das sollte so sein.

<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/txtCredits"
    android:id="@+id/infoTxtCredits"
    android:autoLink="all"
    android:linksClickable="true">
</TextView>

Sie brauchen diesen Code nicht zu verwenden ( t2.setMovementMethod(LinkMovementMethod.getInstance()); ), um den Link anklickbar zu machen.

Und hier ist die Wahrheit: Solange Sie die autoLink und die linksKlickbar Vergessen Sie nicht, dies hinzuzufügen unter Zeichenfolge.xml Datei, damit der anklickbare Link funktioniert.

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X