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

j'ai l'habitude de définir une sorte de AlertDialog se déclenche lorsqu'un utilisateur utilise une de mes applications, et que je vous explique comment utiliser l'application et de donner une présentation générale de ce qu'ils ont téléchargé. Je charge aussi habituellement mes chaînes à partir d'un fichier strings.xml .

ce que je veux faire est de 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 surligné mot ou peut-être juste une adresse web qu'ils pourraient presse. Je suppose que je pourrais juste ajouter un bouton qui les conduirait au site mais je voulais juste savoir si faire un mot dans votre ressource de chaîne de caractères un hyperlien cliquable était possible.

24
demandé sur Jordan 2012-02-09 05:42:09

3 réponses

utilisez simplement un lien En format HTML dans votre ressource:

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

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

il y a aussi l'attribut TextView 's android:autoLink qui devrait aussi fonctionner.

46
répondu Nikolay Elenkov 2015-07-05 18:33:54

j'ai trouvé quelque chose d'intéressant. Laissez-moi savoir si vous avez observé.

ci-dessous le lien hypertexte 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="/q/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource-68058/">
        Click me!
    </a>
</string>

mais si vous utilisez le lien suivant il 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="/q/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource-68058/"> 
        http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource
</string>
    </a>
8
répondu Prakash 2017-09-18 06:49:50

Android ne rend pas les chaînes qui contiennent un lien valide cliquable automatiquement. Ce que vous pouvez faire, c'est ajouter une vue personnalisée à votre dialogue et utiliser WebView pour afficher le message d'alerte. Dans ce cas, vous pouvez stocker html dans vos ressources et ils 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
répondu Tomislav Markovski 2012-02-09 02:02:12