Skip to content

Commit a5ca8f7

Browse files
authored
Merge branch 'rotorgames:develop' into develop
2 parents dae49c1 + a761e83 commit a5ca8f7

File tree

2 files changed

+61
-24
lines changed

2 files changed

+61
-24
lines changed

Rg.Plugins.Popup/Platforms/Android/Impl/PopupPlatformDroid.cs

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
using System;
2-
using System.Text;
32
using System.Threading.Tasks;
43

54
using Android.App;
6-
using Android.Content;
75
using Android.OS;
86
using Android.Provider;
97
using Android.Runtime;
108
using Android.Views;
11-
using Android.Views.Accessibility;
129
using Android.Widget;
1310

1411
using Rg.Plugins.Popup.Contracts;
1512
using Rg.Plugins.Popup.Droid.Extensions;
1613
using Rg.Plugins.Popup.Droid.Impl;
1714
using Rg.Plugins.Popup.Exceptions;
1815
using Rg.Plugins.Popup.Pages;
19-
using Rg.Plugins.Popup.Services;
2016

2117
using Xamarin.Forms;
2218

@@ -56,9 +52,38 @@ static void HandleAccessibilityWorkaround(PopupPage page)
5652
{
5753
if (page.AndroidTalkbackAccessibilityWorkaround)
5854
{
59-
var NavCount = XApplication.Current.MainPage.Navigation.NavigationStack.Count;
60-
Page currentPage = XApplication.Current.MainPage.Navigation.NavigationStack[NavCount - 1];
61-
currentPage.GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.NoHideDescendants;
55+
var navCount = XApplication.Current.MainPage.Navigation.NavigationStack.Count;
56+
var modalCount = XApplication.Current.MainPage.Navigation.ModalStack.Count;
57+
XApplication.Current.MainPage.GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.NoHideDescendants;
58+
59+
if (navCount > 0)
60+
{
61+
XApplication.Current.MainPage.Navigation.NavigationStack[navCount - 1].GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.NoHideDescendants;
62+
}
63+
if (modalCount > 0)
64+
{
65+
XApplication.Current.MainPage.Navigation.ModalStack[modalCount - 1].GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.NoHideDescendants;
66+
}
67+
68+
DisableFocusableInTouchMode(XApplication.Current.MainPage.GetOrCreateRenderer().View.Parent);
69+
}
70+
}
71+
72+
static void DisableFocusableInTouchMode(IViewParent? parent)
73+
{
74+
var view = parent;
75+
string className = $"{view?.GetType().Name}";
76+
77+
while (!className.Contains("PlatformRenderer") && view != null)
78+
{
79+
view = view.Parent;
80+
className = $"{view?.GetType().Name}";
81+
}
82+
83+
if (view is Android.Views.View androidView)
84+
{
85+
androidView.Focusable = false;
86+
androidView.FocusableInTouchMode = false;
6287
}
6388
}
6489
}
@@ -91,9 +116,18 @@ static void HandleAccessibilityWorkaround(PopupPage page)
91116
{
92117
if (page.AndroidTalkbackAccessibilityWorkaround)
93118
{
94-
var NavCount = XApplication.Current.MainPage.Navigation.NavigationStack.Count;
95-
Page currentPage = XApplication.Current.MainPage.Navigation.NavigationStack[NavCount - 1];
96-
currentPage.GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.Auto;
119+
var navCount = XApplication.Current.MainPage.Navigation.NavigationStack.Count;
120+
var modalCount = XApplication.Current.MainPage.Navigation.ModalStack.Count;
121+
XApplication.Current.MainPage.GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.Auto;
122+
123+
if (navCount > 0)
124+
{
125+
XApplication.Current.MainPage.Navigation.NavigationStack[navCount - 1].GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.Auto;
126+
}
127+
if (modalCount > 0)
128+
{
129+
XApplication.Current.MainPage.Navigation.ModalStack[modalCount - 1].GetOrCreateRenderer().View.ImportantForAccessibility = ImportantForAccessibility.Auto;
130+
}
97131
}
98132
}
99133
}
Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
<?xml version="1.0" encoding="utf-8" ?>
2-
<rg:PopupPage xmlns="http://xamarin.com/schemas/2014/forms"
2+
<rg:PopupPage x:Class="Demo.Pages.UserAnimationPage"
3+
xmlns="http://xamarin.com/schemas/2014/forms"
34
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
4-
xmlns:rg="http://rotorgames.com"
55
xmlns:animations="clr-namespace:Demo.Animations;assembly=Demo"
6-
x:Class="Demo.Pages.UserAnimationPage">
7-
<rg:PopupPage.Animation>
8-
<animations:UserAnimation/>
9-
</rg:PopupPage.Animation>
10-
<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
11-
<Frame BackgroundColor="Silver">
12-
<StackLayout Spacing="20">
13-
<Label HorizontalOptions="Center" Text="User Animation" FontSize="16"></Label>
14-
<Button Text="Close" Clicked="OnClose"></Button>
15-
</StackLayout>
16-
</Frame>
17-
</StackLayout>
6+
xmlns:rg="http://rotorgames.com"
7+
AndroidTalkbackAccessibilityWorkaround="True">
8+
<rg:PopupPage.Animation>
9+
<animations:UserAnimation />
10+
</rg:PopupPage.Animation>
11+
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
12+
<Frame BackgroundColor="Silver">
13+
<StackLayout Spacing="20">
14+
<Label FontSize="16"
15+
HorizontalOptions="Center"
16+
Text="User Animation" />
17+
<Button Clicked="OnClose" Text="Close" />
18+
</StackLayout>
19+
</Frame>
20+
</StackLayout>
1821
</rg:PopupPage>

0 commit comments

Comments
 (0)