Jetpack Compose تعامل دقیق در Text
را فعال می کند. انتخاب متن اکنون انعطافپذیرتر است و میتوان آن را در طرحبندیهای قابل ترکیب انجام داد. تعاملات کاربر در متن با دیگر طرحبندیهای قابل ترکیب متفاوت است، زیرا نمیتوانید یک اصلاحکننده به بخشی از Text
قابل نوشتن اضافه کنید. این صفحه API هایی را که تعاملات کاربر را فعال می کنند برجسته می کند.
متن را انتخاب کنید
به طور پیش فرض، composable ها قابل انتخاب نیستند، به این معنی که کاربران نمی توانند متنی را از برنامه شما انتخاب و کپی کنند. برای فعال کردن انتخاب متن، عناصر متن خود را با یک SelectionContainer
قابل ترکیب بپیچید:
@Composable fun SelectableText() { SelectionContainer { Text("This text is selectable") } }
ممکن است بخواهید انتخاب را در قسمت های خاصی از یک منطقه قابل انتخاب غیرفعال کنید. برای انجام این کار، باید قسمت غیر قابل انتخاب را با یک DisableSelection
composable بپیچید:
@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") } } }
موقعیت یک کلیک روی متن را دریافت کنید
برای گوش دادن به کلیک روی Text
، می توانید اصلاح کننده clickable
را اضافه کنید. با این حال، اگر میخواهید موقعیت یک کلیک را در یک Text
composable به دست آورید، در مواردی که اقدامات مختلفی بر اساس بخشهای مختلف متن دارید، باید به جای آن از یک ClickableText
استفاده کنید:
@Composable fun SimpleClickableText() { ClickableText(text = AnnotatedString("Click Me"), onClick = { offset -> Log.d("ClickableText", "$offset -th character is clicked.") }) }
با حاشیه نویسی کلیک کنید
وقتی کاربر روی یک Text
قابل ترکیب کلیک میکند، ممکن است بخواهید اطلاعات اضافی را به بخشی از مقدار Text
اضافه کنید، مانند URL متصل به یک کلمه خاص که برای مثال در مرورگر باز میشود. برای انجام این کار، باید یک حاشیه نویسی را ضمیمه کنید که یک برچسب ( String
)، یک آیتم ( String
) و یک محدوده متن را به عنوان پارامتر می گیرد. از AnnotatedString
، این حاشیه نویسی ها را می توان با برچسب ها یا محدوده متن آنها فیلتر کرد. در اینجا یک مثال است:
@Composable fun AnnotatedClickableText() { val annotatedText = buildAnnotatedString { append("Click ") // We attach this *URL* annotation to the following content // until `pop()` is called pushStringAnnotation( tag = "URL", annotation = "https://developer.android.com" ) withStyle( style = SpanStyle( color = Color.Blue, fontWeight = FontWeight.Bold ) ) { append("here") } pop() } ClickableText(text = annotatedText, onClick = { offset -> // We check if there is an *URL* annotation attached to the text // at the clicked position annotatedText.getStringAnnotations( tag = "URL", start = offset, end = offset ).firstOrNull()?.let { annotation -> // If yes, we log its value Log.d("Clicked URL", annotation.item) } }) }{% کلمه به کلمه %}
توصیه شده برای شما
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- معناشناسی در نوشتن
- قابلیت دسترسی در نوشتن
- Material Design 2 در Compose