54 votes

Liens dans TextView

J'ai besoin de mettre un lien dans un TextView , j'ai une chaîne qui contient la balise <a href="link">Text for link</a> et un autre texte. Le problème est que si je lance le projet, je peux voir le texte, mais ce n'est pas cliquable. J'ai aussi essayé avec la balise <b> pour voir si cela fonctionne et il semble que cela ne fonctionne pas aussi.

Comment puis-je faire en sorte que cela fonctionne sans l'utilisation de Linkify ?

115voto

Cata Points 4636

Merci pour votre aide à tous.

J'ai réussi à faire ce travail, après avoir trouvé quelques exemples dans les exemples Android.

voici le code:

 textView.setText(Html.fromHtml(
            "<b>text3:</b>  Text with a " +
            "<a href=\"http://www.google.com\">link</a> " +
            "created in the Java source code using HTML."));
textView.setMovementMethod(LinkMovementMethod.getInstance());
 

J'espère que cela aidera les autres ...

44voto

Michael Biermann Points 1461

Obtenir des liens de travail à partir de l'html est le genre de difficile:

  1. Appliquer votre texte via xml, android:text="@string/… ou via setText() (voir les autres réponses)

  2. Utiliser textView.setMovementMethod(LinkMovementMethod.getInstance()) de faire des liens cliquables (voir les autres réponses)

  3. Ne PAS ajouter d' android:autoLink="web" à vous de ressources XML (section TextView), sinon Une-tags ne sont pas rendus correctement et ne sont pas cliquables plus longtemps.

Remarque 1:
L' OnClickListener peut être utile, si votre TextView ne contient qu'un seul lien et vous souhaitez déclencher la navigation, même si l'utilisateur clique à côté de votre lien, mais à l'intérieur de l' TextView.

Remarque 2:
android:linksClickable="true" ne fonctionne toujours pas (comme d'Android 3.2), l'utilisation p. 2 au lieu

31voto

Gopinath Points 5997

Linkify est la classe que vous devez utiliser pour créer des liens. BTW, quelle est la raison de la non utilisation Linkify?

Vous pouvez linkify tout le texte dans votre textview pour des actions comme la visite d'un site web ou en appelant un numéro de téléphone basé sur le schéma. Android fournit la meilleure façon de le faire. Considérons le code ci-dessous.

TextView noteView = (TextView) findViewById(R.id.noteview);
noteView.setText(someContent);
Linkify.addLinks(noteView, Linkify.ALL);

Pour créer des liens, de la même Linkify classe fournit diverses options. Google a publié un billet de blog sur ce .

26voto

Damian Walczak Points 583

Je ne pouvais pas comprendre, mais finalement il a commencé à travailler quand j'ai fait quelque chose comme:

    tvTermsOfUse.setText(Html.fromHtml(getString(R.string.tv_terms_of_use_html)));
    Linkify.addLinks(tvTermsOfUse, Linkify.ALL);
    tvTermsOfUse.setMovementMethod(LinkMovementMethod.getInstance());

Affichage de texte ressemble à:

    <TextView
    android:id="@+id/tv_terms_of_use"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:textAlignment="gravity"
    android:gravity="center"
    android:textColor="@android:color/white"
    android:textSize="15sp"
    />

et string res:

<string name="tv_terms_of_use_html"><![CDATA[This is link to <a href="http://google.com/">Google</a>.]]></string>

Important: L' Linkify.addLinks doit être fait avant d' tvTermsOfUse.setMovementMethod, sinon ça ne marchera pas.

Aucun autre réglage n'est nécessaire en XML.

Il m'a pris autour de l'heure à le comprendre moi-même, espérons que cela aide quelqu'un.

20voto

sonida Points 1578

Utilisation

 android:linksClickable="true"
android:autoLink="web"
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X