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.

74voto

vizZ Punkte 1502

Wenn Sie einen HTML-ähnlichen Link hinzufügen möchten, müssen Sie nur Folgendes tun:

  • eine HTML-ähnliche Zeichenfolge hinzufügen:

      <string name="link"><a href="https://www.google.pl/">Google</a></string>
  • fügen Sie Ihre Ansicht dem Layout mit no Link-spezifische Konfiguration überhaupt nicht:

      <TextView
         android:id="@+id/link"
         android:text="@string/link" />`
  • fügen Sie die entsprechende MovementMethod programmatisch zu Ihrer TextView hinzu:

      mLink = (TextView) findViewById(R.id.link);
      if (mLink != null) {
        mLink.setMovementMethod(LinkMovementMethod.getInstance());
      }

Das war's! Und ja, Optionen wie "autoLink" und "linksClickable", die nur bei expliziten Links (nicht in HTML-Tags verpackt) funktionieren, finde ich auch sehr irreführend...

69voto

Asesha George Punkte 1992

Das Folgende sollte für jeden funktionieren, der nach einer Kombination aus Text und Hyperlink in einer Android-App sucht.

Unter string.xml :

<string name="applink">Looking for Digital Visiting card? 
<a href="https://play.google.com/store/apps/details?id=com.themarkwebs.govcard">Get it here</a>
</string>

Jetzt können Sie dies nutzen string in jedem beliebigen View wie diese:

<TextView
    android:id="@+id/getapp"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:textColor="@color/main_color_grey_600"
    android:textSize="15sp"
    android:text="@string/applink"/>

Gehen Sie nun in Ihrer Aktivität oder Ihrem Fragment wie folgt vor:

TextView getapp =(TextView) findViewById(R.id.getapp);
getapp.setMovementMethod(LinkMovementMethod.getInstance());

Sie müssen jetzt nicht mehr die android:autoLink="web" ou android:linksClickable="true" mit diesem Ansatz.

55voto

Shanewaj Punkte 2018

Ich habe diese Zeile in die TextView : android:autoLink="web"
Nachstehend finden Sie ein Beispiel für die Verwendung in einer Layoutdatei.

layout.xml Muster

    <TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="email"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/lostpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/txtDefaultpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="web"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/defaultpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

string.xml

<string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>

<string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>

38voto

Bebin T.N Punkte 2489

Ich hoffe, dies hilft Ihnen;

String value = "<html>Visit my blog <a href=\"http://www.maxartists.com\">mysite</a> View <a href=\"sherif-activity://myactivity?author=sherif&nick=king\">myactivity</a> callback</html>";
TextView text = (TextView) findViewById(R.id.text);

text.setText(Html.fromHtml(value));
text.setMovementMethod(LinkMovementMethod.getInstance());

30voto

Pravesh Punkte 812

Am einfachsten hat es bei mir funktioniert, wenn ich Linkify

TextView txt_Message = (TextView) view.findViewById(R.id.txt_message);
txt_Message.setText("This is link https://www.google.co.in/");
Linkify.addLinks(txt_Message, Linkify.WEB_URLS);

Und es wird automatisch die Web-URLs aus dem Text in der Textansicht erkennen.

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