Jetpack Compose تعاملپذیری دقیق در Text را امکانپذیر میکند. اکنون انتخاب نوشتار انعطافپذیرتر است و در چیدمانهای ترکیبی قابل انجام است. تعاملات کاربر
در نوشتار با چیدمانهای ترکیبی دیگر متفاوت است، زیرا نمیتوانید به بخشی از
عنصر ترکیبی Text اصلاحگر اضافه کنید. این صفحه APIهایی را که تعاملهای کاربر را فعال میکنند برجسته میکند.
انتخاب نوشتار
بهطور پیشفرض، عناصر ترکیبی قابلانتخاب نیستند، یعنی کاربران نمیتوانند نوشتار را از برنامه شما انتخاب و کپی کنند. برای فعال کردن انتخاب نوشتار، عناصر نوشتاری را با عنصر ترکیبی 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 پیوست کنید، مثلاً نشانی وب پیوستشده به کلمه خاصی که در مرورگر باز میشود. در چنین مواردی، باید از LinkAnnotation استفاده کنید که
یک گزارمان است که بخش کلیککردنی نوشتار را نشان میدهد.
با LinkAnnotation، میتوانید نشانی وبی را به بخشی از 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") } } ) }
توصیهشده برای شما
- توجه: نوشتار پیوند وقتی جاوا اسکریپت خاموش است نمایش داده میشود
- معنیشناسی در «نوشتن»
- دسترسپذیری در Compose
- Material Design 2 در Compose