הפעלת האינטראקציות של המשתמשים

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")
        }
    }
}

קטע טקסט ארוך יותר. המשתמש ניסה לבחור את הקטע כולו, אבל מכיוון ששתי שורות הוגדרו כ-DisableSelection, הן לא נבחרו.

יצירת קטעי טקסט שניתן ללחוץ עליהם באמצעות LinkAnnotation

כדי להאזין לקליקים על Text, אפשר להוסיף את המשתנה clickable. עם זאת, יכול להיות שתרצו לצרף מידע נוסף לחלק מסוים של הערך Text, כמו כתובת URL שמצורפת למילת מפתח מסוימת כדי שתוצג בדפדפן. במקרים כאלה, צריך להשתמש ב-LinkAnnotation, שהוא הערה שמייצגת חלק מהטקסט שניתן ללחוץ עליו.

בעזרת LinkAnnotation אפשר לצרף כתובת URL לחלק מרכיב Text שאפשר ליצור, כך שהוא ייפתח באופן אוטומטי אחרי הלחיצה, כפי שמוצג בקטע הקוד הבא:

אפשר גם להגדיר פעולה בהתאמה אישית בתגובה ללחיצה של משתמש על חלק מהרכיב הניתן לקישור Text. בקטע הקוד הבא, כשהמשתמש לוחץ על 'Jetpack Compose', מוצג קישור והמדדים מתועדים אם המשתמש לוחץ על הקישור: