Jetpack פיתוח נייטיב מאפשר אינטראקטיביות מפורטת ב-Text
. בחירת הטקסט היא עכשיו גמישה יותר וניתן לבצע אותה במגוון פריסות שאפשר לשלב. אינטראקציות של משתמשים בטקסט שונות מתבניות מורכבות אחרות, כי אי אפשר להוסיף פונקציית שינוי לחלק מרכיב Text
מורכב. בדף הזה מודגשים ממשקי ה-API שמאפשרים אינטראקציות של משתמשים.
בחירת טקסט
כברירת מחדל, אי אפשר לבחור רכיבים מורכבים, כלומר המשתמשים לא יכולים לבחור ולהעתיק טקסט מהאפליקציה. כדי לאפשר בחירת טקסט, צריך לעטוף את רכיבי הטקסט ברכיב מורכב מסוג SelectionContainer
:
@Composable fun SelectableText() { SelectionContainer { Text("This text is selectable") } }
יכול להיות שתרצו להשבית את האפשרות לבחור חלקים ספציפיים באזור שניתן לבחור. כדי לעשות זאת, צריך לעטוף את החלק שלא ניתן לבחור בו ב-composable של DisableSelection
:
@Composable fun PartiallySelectableText() { SelectionContainer { Column { Text("This text is selectable") Text("This one too") Text("This one as well") DisableSelection { Text("But not this one") Text("Neither this one") } Text("But again, you can select this one") Text("And this one too") } } }
יצירת קטעי טקסט שניתן ללחוץ עליהם באמצעות LinkAnnotation
כדי להאזין לקליקים על Text
, אפשר להוסיף את המשתנה clickable
. עם זאת, יכול להיות שתרצו לצרף מידע נוסף לחלק מסוים של הערך Text
, כמו כתובת URL שמצורפת למילת מפתח מסוימת כדי שתוצג בדפדפן. במקרים כאלה, צריך להשתמש ב-LinkAnnotation
, שהוא הערה שמייצגת חלק מהטקסט שניתן ללחוץ עליו.
בעזרת LinkAnnotation
אפשר לצרף כתובת URL לחלק מרכיב Text
שאפשר ליצור, כך שהוא ייפתח באופן אוטומטי אחרי הלחיצה, כפי שמוצג בקטע הקוד הבא:
@Composable fun AnnotatedStringWithLinkSample() { // Display multiple links in the text Text( 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(".") } ) }
אפשר גם להגדיר פעולה בהתאמה אישית בתגובה ללחיצה של משתמש על חלק מהרכיב הניתן לקישור Text
. בקטע הקוד הבא, כשהמשתמש לוחץ על 'Jetpack Compose', מוצג קישור והמדדים מתועדים אם המשתמש לוחץ על הקישור:
@Composable fun AnnotatedStringWithListenerSample() { // Display a link in the text and log metrics whenever user clicks on it. In that case we handle // the link using openUri method of the LocalUriHandler val uriHandler = LocalUriHandler.current Text( buildAnnotatedString { append("Build better apps faster with ") val link = LinkAnnotation.Url( "https://developer.android.com/jetpack/compose", TextLinkStyles(SpanStyle(color = Color.Blue)) ) { val url = (it as LinkAnnotation.Url).url // log some metrics uriHandler.openUri(url) } withLink(link) { append("Jetpack Compose") } } ) }
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- סמנטיקה ב-Compose
- נגישות ב-Compose
- עיצוב Material 2 ב-Compose