diff --git a/src/Android/Avalonia.Android/AvaloniaAccessHelper.cs b/src/Android/Avalonia.Android/AvaloniaAccessHelper.cs index 59bd7864cd..12d5b1aa4d 100644 --- a/src/Android/Avalonia.Android/AvaloniaAccessHelper.cs +++ b/src/Android/Avalonia.Android/AvaloniaAccessHelper.cs @@ -260,11 +260,23 @@ namespace Avalonia.Android protected override void OnPopulateNodeForVirtualView(int virtualViewId, AccessibilityNodeInfoCompat? nodeInfo) { - if (nodeInfo is null || !_peers.TryGetValue(virtualViewId, out AutomationPeer? peer)) + if (nodeInfo is null) { return; // BAIL!! No work to be done } + if (!_peers.TryGetValue(virtualViewId, out AutomationPeer? peer)) + { + // The node must still be populated: ExploreByTouchHelper rejects one whose text, + // content description or bounds are unset. + nodeInfo.ContentDescription = string.Empty; + nodeInfo.Enabled = false; + nodeInfo.Focusable = false; + nodeInfo.ScreenReaderFocusable = false; + nodeInfo.SetBoundsInScreen(new(0, 0, 0, 0)); + return; + } + // UI logical structure foreach (AutomationPeer child in peer.GetChildren()) {