Vlastnosti automatizace v Xamarin.Forms
Xamarin.Forms umožňuje nastavit hodnoty přístupnosti u prvků uživatelského rozhraní pomocí připojených vlastností z AutomationProperties třídy, která zase nastaví nativní hodnoty přístupnosti. Tento článek vysvětluje, jak používat třídu AutomationProperties, aby čtečka obrazovky mohl mluvit o prvcích na stránce.
Xamarin.Forms umožňuje nastavit vlastnosti automatizace u prvků uživatelského rozhraní pomocí následujících připojených vlastností:
AutomationProperties.IsInAccessibleTree
– označuje, zda je prvek k dispozici pro přístupnou aplikaci. Další informace naleznete v tématu AutomationProperties.IsInAccessibleTree.AutomationProperties.Name
– krátký popis prvku, který slouží jako vyslovitelný identifikátor prvku. Další informace najdete v tématu AutomationProperties.Name.AutomationProperties.HelpText
– delší popis prvku, který lze považovat za text popisu přidružený k prvku. Další informace naleznete v tématu AutomationProperties.HelpText.AutomationProperties.LabeledBy
– umožňuje dalšímu prvku definovat informace o přístupnosti pro aktuální prvek. Další informace naleznete v tématu AutomationProperties.LabeledBy.
Tyto připojené vlastnosti nastaví nativní hodnoty přístupnosti, aby čtečka obrazovky mohl mluvit o prvku. Další informace o připojených vlastnostech naleznete v tématu Připojené vlastnosti.
Důležité
Použití připojených vlastností může mít vliv na AutomationProperties
provádění testů uživatelského rozhraní v Androidu. Vlastnost AutomationId
a AutomationProperties.HelpText
vlastnosti nastaví nativní ContentDescription
vlastnost, přičemž AutomationProperties.Name
hodnoty i AutomationProperties.HelpText
hodnoty vlastnosti mají přednost před AutomationId
hodnotou (pokud AutomationProperties.Name
jsou obě a AutomationProperties.HelpText
jsou nastaveny, hodnoty budou zřetězenyAutomationProperties.Name
). To znamená, že všechny testy, AutomationId
které hledají, selžou, pokud AutomationProperties.Name
nebo AutomationProperties.HelpText
jsou nastavené na elementu. V tomto scénáři by se testy uživatelského rozhraní měly změnit tak, aby hledaly hodnotu AutomationProperties.Name
nebo AutomationProperties.HelpText
zřetězení obou.
Každá platforma má jinou čtečku obrazovky pro pojmenování hodnot přístupnosti:
- iOS má VoiceOver. Další informace najdete v tématu Testování přístupnosti na vašem zařízení pomocí VoiceOveru na developer.apple.com.
- Android má TalkBack. Další informace najdete v tématu Testování přístupnosti aplikace na developer.android.com.
- Windows má Program Předčítání. Další informace najdete v tématu Ověření hlavních scénářů aplikací pomocí Předčítání.
Přesné chování čtečky obrazovky ale závisí na softwaru a jeho konfiguraci. Například většina čteček obrazovky přečte text přidružený k ovládacímu prvku, když dostane fokus, což uživatelům umožní orientovat se při procházení mezi ovládacími prvky na stránce. Některé čtečky obrazovky také čtou celé uživatelské rozhraní aplikace, když se zobrazí stránka, která uživateli umožňuje získat veškerý dostupný informační obsah stránky před pokusem o navigaci.
Čtečky obrazovky také čtou různé hodnoty přístupnosti. V ukázkové aplikaci:
- VoiceOver přečte
Placeholder
hodnotuEntry
ovládacího prvku a potom pokyny pro použití ovládacího prvku. - TalkBack přečte
Placeholder
hodnotu ,Entry
následovanéAutomationProperties.HelpText
hodnotou, následované pokyny pro použití ovládacího prvku. - Program Předčítání přečte
AutomationProperties.LabeledBy
hodnotuEntry
ovládacího prvku a potom pokyny k použití ovládacího prvku.
Kromě toho program Předčítání nastaví prioritu AutomationProperties.Name
, AutomationProperties.LabeledBy
a pak AutomationProperties.HelpText
. V Androidu může TalkBack kombinovat hodnoty AutomationProperties.Name
a AutomationProperties.HelpText
hodnoty. Proto se doporučuje, aby se na každé platformě provádělo důkladné testování přístupnosti, aby se zajistilo optimální prostředí.
AutomationProperties.IsInAccessibleTree
Připojená AutomationProperties.IsInAccessibleTree
vlastnost je boolean
, která určuje, zda je prvek přístupný, a proto je viditelný pro čtečky obrazovky. Musí být nastavená tak, aby true
používala ostatní připojené vlastnosti přístupnosti. To lze provést v XAML následujícím způsobem:
<Entry AutomationProperties.IsInAccessibleTree="true" />
Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:
var entry = new Entry();
AutomationProperties.SetIsInAccessibleTree(entry, true);
Poznámka:
Všimněte si, že metodu SetValue
lze také použít k nastavení AutomationProperties.IsInAccessibleTree
připojené vlastnosti – entry.SetValue(AutomationProperties.IsInAccessibleTreeProperty, true);
AutomationProperties.Name
Připojená AutomationProperties.Name
hodnota vlastnosti by měla být krátký popisný textový řetězec, který čtečka obrazovky používá k oznámení prvku. Tato vlastnost by měla být nastavena pro prvky, které mají význam, které jsou důležité pro pochopení obsahu nebo interakci s uživatelským rozhraním. To lze provést v XAML následujícím způsobem:
<ActivityIndicator AutomationProperties.IsInAccessibleTree="true"
AutomationProperties.Name="Progress indicator" />
Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:
var activityIndicator = new ActivityIndicator();
AutomationProperties.SetIsInAccessibleTree(activityIndicator, true);
AutomationProperties.SetName(activityIndicator, "Progress indicator");
Poznámka:
Všimněte si, že metodu SetValue
lze také použít k nastavení AutomationProperties.Name
připojené vlastnosti – activityIndicator.SetValue(AutomationProperties.NameProperty, "Progress indicator");
AutomationProperties.HelpText
Připojená AutomationProperties.HelpText
vlastnost by měla být nastavena na text, který popisuje prvek uživatelského rozhraní, a lze si představit jako popisek text přidružený k prvku. To lze provést v XAML následujícím způsobem:
<Button Text="Toggle ActivityIndicator"
AutomationProperties.IsInAccessibleTree="true"
AutomationProperties.HelpText="Tap to toggle the activity indicator" />
Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:
var button = new Button { Text = "Toggle ActivityIndicator" };
AutomationProperties.SetIsInAccessibleTree(button, true);
AutomationProperties.SetHelpText(button, "Tap to toggle the activity indicator");
Poznámka:
Všimněte si, že metodu SetValue
lze také použít k nastavení AutomationProperties.HelpText
připojené vlastnosti – button.SetValue(AutomationProperties.HelpTextProperty, "Tap to toggle the activity indicator");
Na některých platformách lze pro úpravy ovládacích prvků, jako Entry
je například , HelpText
vlastnost někdy vynechána a nahrazena zástupným textem. Například "Sem zadejte své jméno" je vhodným kandidátem na Entry.Placeholder
vlastnost, která před skutečným vstupem uživatele umístí text do ovládacího prvku.
AutomationProperties.LabeledBy
Připojená AutomationProperties.LabeledBy
vlastnost umožňuje dalšímu prvku definovat informace o přístupnosti pro aktuální prvek. Například k popisu toho, Label
co představuje, je možné použít vedle symbolu Entry
Entry
. To lze provést v XAML následujícím způsobem:
<Label x:Name="label" Text="Enter your name: " />
<Entry AutomationProperties.IsInAccessibleTree="true"
AutomationProperties.LabeledBy="{x:Reference label}" />
Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:
var nameLabel = new Label { Text = "Enter your name: " };
var entry = new Entry();
AutomationProperties.SetIsInAccessibleTree(entry, true);
AutomationProperties.SetLabeledBy(entry, nameLabel);
Důležité
V iOSu AutomationProperties.LabeledByProperty
se zatím nepodporuje.
Poznámka:
Všimněte si, že metodu SetValue
lze také použít k nastavení AutomationProperties.IsInAccessibleTree
připojené vlastnosti – entry.SetValue(AutomationProperties.LabeledByProperty, nameLabel);
Složitost přístupnosti
Následující části popisují složité nastavení hodnot přístupnosti u určitých ovládacích prvků.
NavigationPage
Pokud chcete v Androidu nastavit text, který čtečky obrazovky čtou pro šipku zpět na panelu NavigationPage
akcí, nastavte vlastnosti AutomationProperties.HelpText
AutomationProperties.Name
na Page
kartě . Mějte ale na paměti, že to nebude mít vliv na tlačítka zpět operačního systému.
FlyoutPage
V iOSu a Univerzální platforma Windows (UPW) nastavíte text, který čtečky obrazovky čtou pro přepínací tlačítko na FlyoutPage
přepínači , buď nastavte AutomationProperties.Name
, a AutomationProperties.HelpText
vlastnosti na FlyoutPage
stránce nebo na IconImageSource
vlastnosti Flyout
stránky.
Pokud chcete v Androidu nastavit text, který čtečky obrazovky čtou pro přepínací tlačítko na tlačítku FlyoutPage
, přidejte do projektu Android textové prostředky:
<resources>
<string name="app_name">Xamarin Forms Control Gallery</string>
<string name="btnMDPAutomationID_open">Open Side Menu message</string>
<string name="btnMDPAutomationID_close">Close Side Menu message</string>
</resources>
Potom nastavte AutomationId
vlastnost IconImageSource
vlastnosti Flyout
stránky na příslušný řetězec:
var flyout = new ContentPage { ... };
flyout.IconImageSource.AutomationId = "btnMDPAutomationID";
ToolbarItem
V iOSu, Androidu a UPW čtou čtečky Text
obrazovky hodnotu ToolbarItem
vlastnosti instancí za předpokladu, že AutomationProperties.Name
nebo AutomationProperties.HelpText
hodnoty nejsou definovány.
V iOSu AutomationProperties.Name
a UPW hodnota vlastnosti nahradí Text
hodnotu vlastnosti přečtenou čtečkou obrazovky.
V Androidu AutomationProperties.Name
hodnoty a/nebo AutomationProperties.HelpText
vlastnosti zcela nahradí Text
hodnotu vlastnosti, která je viditelná i přečtená čtečkou obrazovky. Všimněte si, že se jedná o omezení rozhraní API menší než 26.