Ich möchte einen Link für einen Textansichtstext wie Google erstellen . Gibt es sowieso einen Link wie diesen zu machen. (dh) Wenn Sie auf das Wort Google klicken, sollte der entsprechende Link geöffnet werden. Ideen sind willkommen.
80
Antworten:
Versuchen Sie dies und lassen Sie mich wissen, was passiert.
Verwenden von Java-Code:
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
Html.fromHtml(String source)
ist veraltet, stattdessen verwendenfromHtml(String, int)
,textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));
Oder in einer Layout-XML-Datei in Ihren TextView-Widget-Attributen
android:autoLink="web" android:linksClickable="true"
quelle
android:autoLink="web"
aus XML entfernen müssen . Ich hatte beides und es hat nicht funktioniert.Verwenden Sie
android:autoLink="web"
in der XML-Datei von TextView. Es sollte automatisch klickbare URLs konvertieren (falls im Text gefunden)quelle
Alle getesteten und funktionierenden 100% igen
Lösung:
android:autoLink="web"
Nachfolgend finden Sie ein vollständiges Beispiel für eine
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" />
String in string.xml
<string name="lostpassword">If you lost your password please contact <a href="mailto:[email protected]?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>
quelle
Dies kann auch mithilfe der Standardeigenschaft von Textview erfolgen
android:autoLink="email"
quelle
Hinweis: - Html.fromHtml ist in Android N veraltet
Sie müssen überprüfen und unterstützen
Android N
und höhere Versionen von Android//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 nicht automatisch das AutoLink-Flag in TextView hinzufügen.
Auf diese Weise müssen Sie keine
<a href='somelink'>
Tags hinzufügen .Das ist ein Nachteil, wenn Sie hinzufügen möchten ,
hyperlink
auf einetext
Sie es auf diese Weise nicht tun kann. zB kannst du 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
quelle
Für die neueste Version des SDK
fromHtml
ist veraltet. Verwenden Sie die folgende ZeileString 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)); }
quelle