/ / Android: Textansicht Hyperlink - Android, Hyperlink, Textansicht

Android: Textansicht Hyperlink - Android, Hyperlink, Textansicht

Ich weiß, dass wenn Sie einen Link in eine Textansicht einfügen, es funktioniert, aber wenn ich zum Beispiel anzeigen möchte:

Google Paketüberfluss

und nicht der ganze Link (nur das Tag) Wie kann ich diese Links anklickbar machen?

Antworten:

58 für die Antwort № 1

Sie könnten zwei separate TextViews haben und diese bei Bedarf in Ihrem Layout entsprechend ausrichten:

    Text1.setText(
Html.fromHtml(
"<a href="http://www.google.com">google</a> "));
Text1.setMovementMethod(LinkMovementMethod.getInstance());

Text2.setText(
Html.fromHtml(
"<a href="http://www.stackoverflow.com">stackoverflow</a> "));
Text2.setMovementMethod(LinkMovementMethod.getInstance());

Dann wenn Sie die "Link-Unterstreichung" entfernen möchten. Erstelle eine Klasse:

public class URLSpanNoUnderline extends URLSpan {
public URLSpanNoUnderline(String url) {
super(url);
}
@Override public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}

Fügen Sie diese Methode in Ihrer Hauptaktivitätsklasse hinzu, in der Sie die TextViews haben

private void stripUnderlines(TextView textView) {
Spannable s = new SpannableString(textView.getText());
URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
for (URLSpan span: spans) {
int start = s.getSpanStart(span);
int end = s.getSpanEnd(span);
s.removeSpan(span);
span = new URLSpanNoUnderline(span.getURL());
s.setSpan(span, start, end, 0);
}
textView.setText(s);
}

Und dann rufen Sie das einfach auf, nachdem Sie die TextViews (in Ihrem onCreate) initialisiert haben:

stripUnderlines(Text1);
stripUnderlines(Text2);

46 für die Antwort № 2
TextView t2 = (TextView) findViewById(R.id.textviewidname);
t2.setMovementMethod(LinkMovementMethod.getInstance());

und

<string name="google_stackoverflow"><a href="https://stackoverflow.com/questions/9852184/android-textview-hyperlink?rq=1">google stack overflow</a></string>

Der Link ist "Android: Textansicht-Hyperlink"

und das Tag ist "Google Stack-Überlauf"

Definieren Sie den ersten Codeblock in Ihrem Java und den zweiten Codeblock in Ihrer Datei strings.xml. Stellen Sie außerdem sicher, dass Sie die ID des textView von Ihrem Seitenlayout in Ihrem Java aus referenzieren.


12 für die Antwort № 3

Sehr einfache Möglichkeit, dies zu tun ---

In deiner Aktivität--

 TextView tv = (TextView) findViewById(R.id.site);
tv.setText(Html.fromHtml("<a href=http://www.stackoverflow.com> STACK OVERFLOW "));
tv.setMovementMethod(LinkMovementMethod.getInstance());

Dann bekommst du nur den Tag, nicht den ganzen Link.

Hoffe es wird dir helfen ...


8 für die Antwort № 4

android:autoLink="web" funktioniert einfach, wenn Sie vollständige Links in Ihrem HTML haben. Das Folgende wird blau und anklickbar hervorgehoben:


5 für die Antwort № 5

das sollte funktionieren.

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

and

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/txtCredits"
android:id="@+id/text2"
android:layout_centerInParent="true"
android:layout_marginTop="20dp"></TextView>

2 für die Antwort № 6

Dies ist meine Arbeitsimplementierung

private void showMessage()
{

lblMessage.setText("");

List<String> messages = db.getAllGCMMessages();

for (int k = messages.size() - 1; k >= 0; --k)
{

String message  =  messages.get(k).toString();
lblMessage.append(message + "nn");

}
Linkify.addLinks(lblMessage, Linkify.ALL);
}

und um die farbe von hyperlinks zu ändern, habe ich mein xml für textview editiert -

 android:textColorLink="#69463d"

2 für die Antwort № 7

Ich habe das gleiche Problem gefunden und finde endlich die funktionierende Lösung.

  1. Definieren Sie in der Datei string.xml Folgendes:

    <string name="textWithHtml">The URL link is &lt;a href="http://www.google.com">Google&lt;/a></string>
    

Ersetzen Sie das Zeichen "<" durch ein ausgeblendetes HTML-Zeichen.

  1. Im Java-Code:

    String text = v.getContext().getString(R.string.textWithHtml);
    textView.setText(Html.fromHtml(text));
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    

Und die TextBox wird den Text mit anklickbarer Ankerverbindung korrekt anzeigen