يتيح Jetpack Compose تفاعلًا دقيقًا في Text
. أصبح اختيار النص
أكثر مرونة ويمكن تنفيذه في التنسيقات القابلة للتجميع. تختلف تفاعلات المستخدمين
في النص عن التنسيقات الأخرى القابلة للتجميع، لأنّه لا يمكنك إضافة مُعدِّل
إلى جزء من عنصر Text
قابل للتجميع. تُبرز هذه الصفحة واجهات برمجة التطبيقات
التي تتيح تفاعلات المستخدمين.
تحديد نص
لا يمكن اختيار العناصر القابلة للتجميع تلقائيًا، ما يعني أنّه لا يمكن للمستخدمين
اختيار النص من تطبيقك ونسخه. لتفعيل اختيار النص، عليك لف
عناصر النص بعنصر قابل للتجميع SelectionContainer
:
@Composable fun SelectableText() { SelectionContainer { Text("This text is selectable") } }
قد تحتاج إلى إيقاف الاختيار في أجزاء معيّنة من منطقة قابلة للاختيار. لإجراء ذلك، يجب لف الجزء غير القابل للاختيار بعنصر 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 غير مفعّلة.
- الدلالات في ميزة "الإنشاء"
- تسهيل الاستخدام في ميزة "الإنشاء"
- تصميم Material Design 2 في ميزة "الإنشاء"