Vlastnosti automatizace v Xamarin.Forms
Xamarin.Forms umožňuje nastavit hodnoty přístupnosti na prvky uživatelského rozhraní pomocí připojených vlastností z AutomationProperties třídy, která následně 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 nastavení vlastností automatizace u prvků uživatelského rozhraní pomocí následujících připojených vlastností:
AutomationProperties.IsInAccessibleTree
– označuje, zda je prvek dostupný 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 nastavují 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 AutomationProperties
vlastností může mít vliv na spuštění testu uživatelského rozhraní v Androidu. Vlastnost AutomationId
a AutomationProperties.HelpText
vlastnosti nastaví nativní ContentDescription
vlastnost s AutomationProperties.Name
hodnotami i AutomationProperties.HelpText
hodnotami vlastností, které mají přednost před AutomationId
hodnotou (pokud AutomationProperties.Name
jsou obě a AutomationProperties.HelpText
nastaveny, hodnoty budou zřetězenyAutomationProperties.Name
). To znamená, že všechny testy, které hledají AutomationId
, selžou, pokud AutomationProperties.Name
nebo AutomationProperties.HelpText
jsou také nastaveny na element. 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, která bude popisovat hodnoty 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 vaší 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 na konfiguraci uživatele. Většina čteček obrazovky například 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 pokyny pro použití ovládacího prvku. - TalkBack přečte
Placeholder
hodnotu hodnotyEntry
, následovanéAutomationProperties.HelpText
hodnotou a pokyny pro použití ovládacího prvku. - Program Předčítání přečte
AutomationProperties.LabeledBy
hodnotuEntry
ovládacího prvku a 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
. TalkBack může v Androidu kombinovat hodnoty AutomationProperties.Name
a AutomationProperties.HelpText
hodnoty. Proto se doporučuje provést důkladné testování přístupnosti na každé platformě, aby se zajistilo optimální prostředí.
AutomationProperties.IsInAccessibleTree
Připojená AutomationProperties.IsInAccessibleTree
boolean
vlastnost je, která určuje, zda je prvek přístupný, a proto 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" />
Případně 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 použít také 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ý je 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" />
Případně 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 použít také 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 popis 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" />
Případně 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 použít také k nastavení AutomationProperties.HelpText
připojené vlastnosti – button.SetValue(AutomationProperties.HelpTextProperty, "Tap to toggle the activity indicator");
U některých platforem lze u ovládacích prvků pro úpravy, jako Entry
je například , HelpText
vlastnost někdy vynechat a nahradit zástupným textem. Například "Sem zadejte své jméno" je vhodným kandidátem pro 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 jinému prvku definovat informace o přístupnosti pro aktuální prvek. Můžete například Label
použít vedle symbolu Entry
, který popisuje, co Entry
představuje. 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}" />
Případně 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 použít také 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 na určitých ovládacích prvcích.
NavigationPage
Pokud chcete nastavit text, který čtečky obrazovky čtou pro šipku zpět na panelu akcí na NavigationPage
panelu akcí, nastavte vlastnosti AutomationProperties.Name
na AutomationProperties.HelpText
Page
. Mějte však 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ínač tlačítka , FlyoutPage
buď nastavte AutomationProperties.Name
, a AutomationProperties.HelpText
vlastnosti na FlyoutPage
kartě 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 FlyoutPage
tlačítku , přidejte do projektu Androidu řetězcové zdroje:
<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
Čtečky obrazovky na iOSu, Androidu a UPW čtou Text
hodnotu ToolbarItem
vlastností instancí za předpokladu, že AutomationProperties.Name
nejsou definované hodnoty AutomationProperties.HelpText
.
V iOSu a UPW AutomationProperties.Name
hodnota vlastnosti nahradí Text
hodnotu vlastnosti přečtenou čtečkou obrazovky.
Hodnoty vlastností a/nebo AutomationProperties.HelpText
v Androidu AutomationProperties.Name
zcela nahradí Text
hodnotu vlastnosti, která je viditelná i přečtená čtečkou obrazovky. Všimněte si, že jde o omezení rozhraní API menší než 26.