Skip to content

Commit 19f45a9

Browse files
committed
fix
1 parent d5feebc commit 19f45a9

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewAccessibilityDelegate.kt

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -290,22 +290,25 @@ internal class ReactTextViewAccessibilityDelegate(
290290
init {
291291
val accessibleLinks = mutableListOf<AccessibleLink>()
292292
val spans = text.getSpans(0, text.length, ClickableSpan::class.java)
293-
spans.sortBy { text.getSpanStart(it) }
294-
for (i in spans.indices) {
295-
val span = spans[i]
296-
val start = text.getSpanStart(span)
297-
val end = text.getSpanEnd(span)
298-
// zero length spans, and out of range spans should not be included.
299-
if (start == end || start < 0 || end < 0 || start > text.length || end > text.length) {
300-
continue
301-
}
302293

303-
val link = AccessibleLink()
304-
link.description = text.subSequence(start, end).toString()
305-
link.start = start
306-
link.end = end
307-
link.id = i
308-
accessibleLinks.add(link)
294+
if (!isWholeTextSingleLink(text, spans)) {
295+
spans.sortBy { text.getSpanStart(it) }
296+
for (i in spans.indices) {
297+
val span = spans[i]
298+
val start = text.getSpanStart(span)
299+
val end = text.getSpanEnd(span)
300+
// zero length spans, and out of range spans should not be included.
301+
if (start == end || start < 0 || end < 0 || start > text.length || end > text.length) {
302+
continue
303+
}
304+
305+
val link = AccessibleLink()
306+
link.description = text.subSequence(start, end).toString()
307+
link.start = start
308+
link.end = end
309+
link.id = i
310+
accessibleLinks.add(link)
311+
}
309312
}
310313
links = accessibleLinks
311314
}
@@ -342,3 +345,14 @@ internal class ReactTextViewAccessibilityDelegate(
342345
}
343346
}
344347
}
348+
349+
private fun isWholeTextSingleLink(text: Spanned, spans: Array<ClickableSpan>): Boolean {
350+
if (spans.size != 1) {
351+
return false
352+
}
353+
354+
val span = spans[0]
355+
val start = text.getSpanStart(span)
356+
val end = text.getSpanEnd(span)
357+
return start == 0 && end == text.length
358+
}

0 commit comments

Comments
 (0)