wake-up-neo.com

Erstellen Sie eine Hyperlink-Textansicht in Android

Ich möchte einen Link für Texttexte wie Google erstellen. Gibt es trotzdem einen solchen Link? (d. h.) Wenn Sie auf das Wort Google klicken, sollte der entsprechende Link geöffnet werden. Irgendwelche Ideen sind willkommen.

63
Srinivas

Probieren Sie es aus und lassen Sie mich wissen, was passiert.

Java-Code verwenden:

TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));

Ab API-Ebene> = 24 ist Html.fromHtml(String source) veraltet, stattdessen fromHtml(String, int).

textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));

Oder in einer Layout-XML-Datei innerhalb Ihrer TextView-Widgetattribute

Android:autoLink="web"
Android:linksClickable="true"
107
user370305

verwenden Sie Android:autoLink="web" in der XML-Datei Ihres TextView. URLs, die im Text gefunden werden können, sollten automatisch konvertierbar sein

51
waqaslam

Alle getestet und funktionieren 100% 
Lösung: Android:autoLink="web" 
unten ist ein vollständiges Beispiel 

Beispiellayout Xml

    <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/txtLostpassword"
        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" />

Zeichenfolge in string.xml 

<string name="lostpassword">If you lost your password please contact <a href="mailto:[email protected]?Subject=Lost%20Password" target="_top">[email protected]</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>
26
Shanewaj

Dies kann auch mit der Standardeigenschaft von Textview erfolgen. 

Android:autoLink="email"
6

Hinweis: - Html.fromHtml ist in Android N veraltet.

Sie müssen Android N und höhere Versionen von Android überprüfen und unterstützen

                  //Set clickable true
                 tagHeading.setClickable(true);

                  //Handlle click event
                  tagHeading.setMovementMethod(LinkMovementMethod.getInstance());

                if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.N) {
                    tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>", Html.FROM_HTML_MODE_LEGACY));
                } else {
                    tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>"));
                }

Alternative

Sie können es nicht möchten, dass Sie das autoLink-Flag in TextView programmgesteuert hinzufügen.

Android: autoLink = "web"

Android: linksClickable = "true"

Auf diese Weise müssen Sie keine <a href='somelink'>-Tags hinzufügen. 

Das ist ein Nachteil, wenn Sie hyperlink zu einer text hinzufügen möchten, können Sie dies nicht tun. zB können Sie so etwas nicht machen: - [hiteshsahu] [1]

           <TextView
                Android:id="@+id/tag_info"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_below="@+id/tag_ll"
                Android:layout_gravity="left"
                Android:layout_margin="10dp"
                Android:autoLink="web"
                Android:linksClickable="true"
                Android:text="https://github.com/hiteshsahu"
                Android:textColor="@color/secondary_text" />

Das Ergebnis beider Ansätze: - 

https://github.com/hiteshsahu

4
Hitesh Sahu

Für die neueste Version von SDK ist fromHtml veraltet Verwenden Sie die untere Zeile 

String yourtext = "<a style='text-decoration:underline' href='http://www.sample.com'> Sample Website </a>";
    if (Build.VERSION.SDK_INT >= 24) {
        textView.setText(Html.fromHtml(yourtext, Html.FROM_HTML_MODE_LEGACY));
    } else {
        textView.setText(Html.fromHtml(yourtext));
    }
1
Rohan Pawar