web-dev-qa-db-fra.com

Android-Est-il possible d'ajouter un lien cliquable dans une ressource de chaîne

J'ai généralement mis en place une sorte de AlertDialog pour déclencher lorsqu'un utilisateur utilise une de mes applications pour la première fois et j'explique comment utiliser l'application et donne une introduction générale à ce qu'il vient de télécharger. Je charge également généralement mes chaînes à partir d'un strings.xml fichier.

Ce que je veux faire, c'est rendre un des mots de ma ressource de chaîne cliquable comme un hyperlien sur une page Web. Fondamentalement, vous auriez un AlertDialog et dans la ressource de chaîne, il y aurait un mot en surbrillance ou peut-être juste une adresse Web sur laquelle ils pourraient appuyer. Je suppose que je pourrais simplement ajouter un bouton qui les amènerait sur le site mais je voulais juste savoir si faire un mot dans votre ressource de chaîne un lien hypertexte cliquable était possible.

33
James andresakis

Utilisez simplement un lien au format HTML dans votre ressource:

<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>

Vous pouvez ensuite utiliser setMovementMethod(LinkMovementMethod.getInstance()) sur votre TextView pour rendre le lien cliquable.

Il existe également l'attribut Android:autoLink De TextView qui devrait également fonctionner.

58
Nikolay Elenkov

J'ai trouvé quelque chose d'intéressant. Faites-moi savoir si l'un de vous a observé cela.

L'hyperlien ci-dessous ne fonctionne pas si vous utilisez

Android:autoLink="web"

mais fonctionne avec

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

<string name="my_link">
    <a href="http://stackoverflow.com/questions/9204303/Android-is-it-possible-to-add-a-clickable-link-into-a-string-resource">
        Click me!
    </a>
</string>

mais si vous utilisez le lien suivant, cela fonctionne avec les deux

Android:autoLink="web" (or)
TextView link = (TextView) findViewById(R.id.link);
link.setMovementMethod(LinkMovementMethod.getInstance());

<string name="my_link">
    <a href="http://stackoverflow.com/questions/9204303/Android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
        http://stackoverflow.com/questions/9204303/Android-is-it-possible-to-add-a-clickable-link-into-a-string-resource
    </a>
</string>
10
Prakash

Android ne crée pas automatiquement de chaînes contenant un lien valide. Ce que vous pouvez faire, c'est ajouter une vue personnalisée à votre boîte de dialogue et utiliser WebView pour afficher le message d’alerte. Dans ce cas, vous pouvez stocker du html dans vos ressources et elles seront cliquables.

View alertDialogView = LayoutInflater.inflate(R.layout.alert_dialog_layout, null);

WebView myWebView = (WebView) alertDialogView.findViewById(R.id.dialogWebView);
myWebView.loadData("<a href=\"http://google.com\">Google!</a>", "text/html", "utf-8");
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
builder.setView(alertDialogView);

alert_dialog_layout.xml

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent" Android:layout_height="wrap_content"
Android:orientation="vertical">
<WebView Android:id="@+id/dialogWebView" Android:layout_height="wrap_content"
    Android:layout_width="wrap_content" />
4
Tomislav Markovski