Jetpack Compose, Text
uygulamasında son derece ayrıntılı etkileşim olanakları sağlar. Metin seçimi artık daha esnek ve composable düzenlerde seçilebiliyor. 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 etkinleştiren
API'lar vurgulanmaktadır.
Metin seçin
Varsayılan olarak composable'lar seçilemez. Bu nedenle, kullanıcılar uygulamanızdan metin seçip kopyalayamaz. 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 tıklandığında konumu alın
Text
öğesine yapılan tıklamaları dinlemek için clickable
değiştiricisini ekleyebilirsiniz. Bununla birlikte, bir Text
composable'ında tıklamanın konumunu almak istiyorsanız, metnin farklı bölümlerine göre farklı işlemleriniz olması durumunda, 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çıklamayla tıklama
Kullanıcı bir Text
composable'ı tıkladığında Text
değerinin belirli bir kısmına ekstra bilgiler eklemek isteyebilirsiniz (ör. tarayıcıda açılacak belirli bir kelimeye eklenmiş bir URL gibi). Bunun için bir ek açıklama eklemeniz gerekir. Bu işlemde etiket (String
), öğe (String
) ve metin aralığı parametre olarak alınır. AnnotatedString
öğesinden, bu ek açıklamalar etiketleri veya metin aralıklarıyla 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: Bağlantı metni JavaScript kapalıyken görüntülenir
- E-posta Yazlarında Anlambilim
- Oluşturma bölümünde erişilebilirlik
- Oluşturma işleminde Materyal Tasarım 2