Hier ist die Lösung, die für mich funktionierte, nachdem ich mehrere Stack Overflow-Posts durchgesehen hatte. Ich habe es auf Ihre Implementierung zugeschnitten:
1.Entfernen Autolink- für LinkMovementMethod mit und stellen Sie linksClickable auf true
<TextView
android:id="@+id/termsOfUse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#ffffff"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:textSize="14sp"
android:clickable="true"
android:linksClickable="true"
android:textColorLink="@color/colorPrimary"
android:text="@string/agree_terms_privacy"/>
Wenn Sie die android:autoLink="web"
Eigenschaft verwenden, dann werden Sie haben überschreiben Sie es mit textView.setAutoLinkMask(0);
vor dem Aufruf setText()
auf Ihrem TextView. Sie können den Link auch so einstellen, dass er in Ihrer Aktivität anklickbar ist, wie in Harshals Antwort, wenn Sie es bevorzugen, aber ich habe es verlassen, da Sie es bereits im Layout hatten. Ich fügte auch eine ID zu Ihrem TextView termsOfUse
hinzu, die wir später verwenden werden.
2.ersetzen < mit <
in strings.xml und entfernen Sie doppelte Anführungszeichen um die URL
Dies liegt daran, wenn Sie die Zeichenfolge-Ressource abrufen, wird es nicht die eingebettete HTML korrekt analysieren und Aus irgendeinem Grund entgeht es nicht den Anführungszeichen. Also statt:
<string name="agree_terms_privacy">By continuing, you agree to our <a href="http://link1/terms">Terms of Use</a> and read the <a href="http://link1/privacy">Privacy Policy</a></string>
Sie tun möchten:
<string name="agree_terms_privacy">By continuing, you agree to our <a href=http://link1/terms>Terms of Use</a> and read the <a href=http://link1/privacy>Privacy Policy</a></string>
3. Parsen der String-Ressource und die Bindung an unsere Textview
Spanned policy = Html.fromHtml(getString(R.string.agree_terms_privacy));
TextView termsOfUse = (TextView)findViewById(R.id.termsOfUse);
termsOfUse.setText(policy);
termsOfUse.setMovementMethod(LinkMovementMethod.getInstance());
Hinweis: Html.fromHtml wurde in API 24 als veraltet eingestuft (siehe this post für weitere Informationen zur Vorgehensweise bei Bedarf). Wir verwenden diese Methode, um die erwartete HTML-Formatierung aus unserer Zeichenfolge zu erhalten.
hast du http://stackoverflow.com/questions/2734270/how-do-i-make-links-in-a-textview-clickable überprüft? – user5599807
Überprüfen Sie die Antwort http://stackoverflow.com/a/2746708/2435238 – sJy
Ich schlage vor, mit Spannable vertraut zu machen. http://stackoverflow.com/questions/10696986/how-to-set-the-part-of-the-text-view-is-clickable. – piotrpo