wake-up-neo.net

Android TextView-Hyperlink

Ich implementiere eine TextView mit einer Zeichenfolge, die zwei Hyperlinks enthält (siehe unten), aber die Links öffnen kein neues Browserfenster:

<TextView
        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:autoLink="web"
        Android:text="@string/agree_terms_privacy"/>

In string.xml

<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>
12
Yen Pei Tay

Hier ist die Lösung, die für mich funktioniert hat, nachdem ich mehrere Stapelüberlaufpfosten durchgesehen habe. Ich habe es auf Ihre Implementierung zugeschnitten:

1.Entfernen Sie den Autolink für LinkMovementMethod und setzen 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, müssen Sie sie mit textView.setAutoLinkMask(0); überschreiben, bevor Sie setText() in Ihrer TextView aufrufen. Sie können den Link auch so einstellen, dass er in Ihrer Aktivität anklickbar ist, statt wie in der Antwort von Harshal, wenn Sie möchten, aber ich habe ihn belassen, da Sie ihn bereits im Layout hatten. Ich habe auch eine ID mit dem Namen termsOfUse zu Ihrer TextView hinzugefügt, die wir später verwenden werden.

2.Ersetzen Sie <durch &lt; in strings.xml und entfernen Sie doppelte Anführungszeichen um die URL.

Dies liegt daran, dass beim Abrufen der Zeichenfolgenressource die eingebettete HTML-Datei nicht ordnungsgemäß analysiert wird und die doppelten Anführungszeichen aus irgendeinem Grund nicht entgehen. 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>

du willst tun:

<string name="agree_terms_privacy">By continuing, you agree to our &lt;a href=http://link1/terms>Terms of Use&lt;/a> and read the &lt;a href=http://link1/privacy>Privacy Policy&lt;/a></string>

3. Analyse der String-Ressource und 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 nicht mehr unterstützt (siehe diesen Beitrag für weitere Informationen zum erforderlichen Umgang). Wir verwenden diese Methode, um die erwartete HTML-Formatierung aus unserer Zeichenfolge abzurufen.

10
nicolettecodes

Schauen Sie sich das Code-Snippet an, ich hoffe es hilft,

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));
7
Harshal Benake

diese Arbeit für mich

Fügen Sie dies in Ihrer Textansicht hinzu: Android: autoLink = "all" Android: clickable = "true"

https://www.youtube.com/watch?v=UnJxyfyDyHU

Ich hoffe das hilft dir.

3
Rebe

Ich würde Ihnen empfehlen, zwei TextViews zu haben, da Sie zwei verschiedene Aktionen wünschen:

TextView yourTermsOfUseTextView = (TextView) findViewById(R.id.your_id);
yourTermsOfUseTextView.setOnclickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(your_download_link));
                    startActivity(myIntent);
                }
            });

Wiederholen Sie die Datenschutzbestimmungen.

1
Joaquim Ley

Fügen Sie einfach folgenden Code in Ihre Textview ein.

Android:autoLink="email"   
0
Soumen Das