Jetpack Compose, Text
ürününde ayrıntılı etkileşim sağlar. Metin seçimi artık daha esnek ve derlenebilir düzenlerde yapılabilir. Text
composable'ın bir bölümüne düzenleyici ekleyemeyeceğinizden, metindeki kullanıcı etkileşimleri diğer composable düzenlerden farklıdır. Bu sayfada, kullanıcı etkileşimlerini sağlayan
API'ler vurgulanmaktadır.
Metin seçin
Varsayılan olarak, composable'lar seçilemez. Bu, kullanıcıların uygulamanızdan metin seçip kopyalayamayacakları anlamına gelir. Metin seçimini etkinleştirmek için metin öğelerinizi bir SelectionContainer
composable ile sarmalayın:
@Composable fun SelectableText() { SelectionContainer { Text("This text is selectable") } }
Seçilebilir bir alanın belirli bölümlerinde seçimi devre dışı bırakmak isteyebilirsiniz. Bunu yapmak için seçilemeyen bölümü bir DisableSelection
composable ile sarmalamanız gerekir:
@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") } } }
Metin üzerindeki tıklamanın konumunu alın
Text
üzerindeki tıklamaları dinlemek için clickable
değiştiriciyi ekleyebilirsiniz. Ancak, bir Text
composable içinde bir tıklamanın konumunu almak istiyorsanız metnin farklı bölümlerine dayalı farklı işlemleriniz olduğunda bunun yerine bir ClickableText
kullanmanız gerekir:
@Composable fun SimpleClickableText() { ClickableText(text = AnnotatedString("Click Me"), onClick = { offset -> Log.d("ClickableText", "$offset -th character is clicked.") }) }
Ek açıklama içeren tıklama
Kullanıcı bir Text
composable'ı tıkladığında Text
değerinin bir kısmına ekstra bilgiler eklemek isteyebilirsiniz. Örneğin, bir tarayıcıda açılacak belirli bir kelimeye ekli bir URL gibi. Bunu yapmak için bir ek açıklama eklemeniz gerekir. Bu not, parametre olarak bir etiket (String
), öğe (String
) ve metin aralığı alır. Bir AnnotatedString
üzerinden, bu ek açıklamalar etiketleri veya metin aralıklarına göre filtrelenebilir. Örnek:
@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) } }) }
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Yazma sırasında anlamlar
- Compose'da erişilebilirlik
- Compose'da Materyal Tasarım 2