Vlastnosti automatizace v Xamarin.Forms

Download Sample Stažení ukázky

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 AutomationIda 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.HelpTextzřetězení obou.

Každá platforma má jinou čtečku obrazovky, která bude popisovat hodnoty přístupnosti:

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 hodnotu Entryovládacího prvku a pokyny pro použití ovládacího prvku.
  • TalkBack přečte Placeholder hodnotu hodnoty Entry, následované AutomationProperties.HelpText hodnotou a pokyny pro použití ovládacího prvku.
  • Program Předčítání přečte AutomationProperties.LabeledBy hodnotu Entryovládacího prvku a pokyny k použití ovládacího prvku.

Kromě toho program Předčítání nastaví prioritu AutomationProperties.Name, AutomationProperties.LabeledBya 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.IsInAccessibleTreeboolean 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 Entryje 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.

Pokud chcete nastavit text, který čtečky obrazovky čtou pro šipku zpět na panelu akcí na NavigationPagepanelu akcí, nastavte vlastnosti AutomationProperties.Name na AutomationProperties.HelpTextPage. 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 , FlyoutPagebuď nastavte AutomationProperties.Name, a AutomationProperties.HelpText vlastnosti na FlyoutPagekartě 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 FlyoutPagetlačí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.