Prise en charge de plusieurs liens dans une seule chaîne de texte
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Vous pouvez utiliser plusieurs liens dans une seule chaîne de texte pour effectuer différentes actions lorsque vous cliquez sur une sous-section de texte.
Compatibilité des versions
Cette implémentation nécessite que la version minimale du SDK de votre projet soit définie sur le niveau d'API 21 ou supérieur.
Dépendances
Afficher plusieurs liens dans une seule chaîne
Cet extrait intègre plusieurs liens cliquables dans une seule chaîne de texte:
@ComposablefunAnnotatedStringWithLinkSample(){// Display multiple links in the textText(buildAnnotatedString{append("Go to the ")withLink(LinkAnnotation.Url("https://developer.android.com/",TextLinkStyles(style=SpanStyle(color=Color.Blue)))){append("Android Developers ")}append("website, and check out the")withLink(LinkAnnotation.Url("https://developer.android.com/jetpack/compose",TextLinkStyles(style=SpanStyle(color=Color.Green)))){append("Compose guidance")}append(".")})}
Utilise la fonction buildAnnotatedString pour créer une chaîne de texte annotée.
Spécifie le style du lien et du texte en les transmettant en tant qu'arguments de la fonction LinkAnnotation.Url() (elle-même transmise en tant qu'argument de la fonction withLink()). Un écouteur de clics est intégré à LinkAnnotation.Url().
Ajoute du texte à l'aide de append() dans le corps de la fonction withLink.
Répétez cette procédure pour ajouter un autre segment de texte associé.
Résultats
Figure 1. Capture d'écran d'une chaîne de texte contenant deux liens différents.
Collections contenant ce guide
Ce guide fait partie de ces collections de guides rapides sélectionnées qui couvrent des objectifs de développement Android plus larges:
Texte à afficher
Le texte est un élément central de n'importe quelle interface utilisateur. Découvrez les différentes façons de présenter le texte dans votre application pour offrir une expérience utilisateur agréable.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/02/22 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/02/22 (UTC)."],[],[],null,["# Support multiple links in a single string of text\n\n\u003cbr /\u003e\n\nYou can support multiple links in a single string of text to perform different\nactions when clicking a subsection of text.\n\nVersion compatibility\n---------------------\n\nThis implementation requires that your project minSDK be set to API level 21 or\nhigher.\n\n### Dependencies\n\n### Kotlin\n\n\u003cbr /\u003e\n\n```kotlin\n implementation(platform(\"androidx.compose:compose-bom:2025.08.00\"))\n implementation(\"androidx.compose.material3:material3\")\n \n```\n\n\u003cbr /\u003e\n\n### Groovy\n\n\u003cbr /\u003e\n\n```groovy\n implementation platform('androidx.compose:compose-bom:2025.08.00')\n implementation 'androidx.compose.material3:material3'\n \n```\n\n\u003cbr /\u003e\n\nDisplay multiple links in a single string\n-----------------------------------------\n\nThis snippet embeds multiple clickable links into a single string of text:\n\n\n```kotlin\n@Composable\nfun AnnotatedStringWithLinkSample() {\n // Display multiple links in the text\n Text(\n buildAnnotatedString {\n append(\"Go to the \")\n withLink(\n LinkAnnotation.Url(\n \"https://developer.android.com/\",\n TextLinkStyles(style = SpanStyle(color = Color.Blue))\n )\n ) {\n append(\"Android Developers \")\n }\n append(\"website, and check out the\")\n withLink(\n LinkAnnotation.Url(\n \"https://developer.android.com/jetpack/compose\",\n TextLinkStyles(style = SpanStyle(color = Color.Green))\n )\n ) {\n append(\"Compose guidance\")\n }\n append(\".\")\n }\n )\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt#L564-L590\n```\n\n\u003cbr /\u003e\n\n### Key points about the code\n\n- Uses the [`buildAnnotatedString`](/reference/kotlin/androidx/compose/ui/text/package-summary#buildAnnotatedString(kotlin.Function1)) function to create an annotated string of text.\n- Specifies the the link and text styling by passing them as arguments of the [`LinkAnnotation.Url()`](/reference/kotlin/androidx/compose/ui/text/LinkAnnotation.Url) function (itself passed as an argument of the [`withLink()`](/reference/kotlin/androidx/compose/ui/text/AnnotatedString.Builder#(androidx.compose.ui.text.AnnotatedString.Builder).withLink(androidx.compose.ui.text.LinkAnnotation,kotlin.Function1)) function). A click listener is built into `LinkAnnotation.Url()`.\n- Adds text using [`append()`](/reference/kotlin/androidx/compose/ui/text/AnnotatedString.Builder#append(kotlin.CharSequence,kotlin.Int,kotlin.Int)) in the body of the `withLink` function.\n- Repeats this process to add another linked text segment.\n\nResults\n-------\n\n**Figure 1.** A screenshot of one text string containing two different links.\n\nCollections that contain this guide\n-----------------------------------\n\nThis guide is part of these curated Quick Guide collections that cover\nbroader Android development goals: \n\n### Display text\n\nText is a central piece of any UI. Find out different ways you can present text in your app to provide a delightful user experience. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/display-text) \n\nHave questions or feedback\n--------------------------\n\nGo to our frequently asked questions page and learn about quick guides or reach out and let us know your thoughts. \n[Go to FAQ](/quick-guides/faq) [Leave feedback](https://issuetracker.google.com/issues/new?component=1573691&template=1993320)"]]