
Der TransparentContainer ist ein Oberflächenelement-Container, der keine visuelle Darstellung besitzt. Ein TransparentContainer-Oberflächenelement ist transparent und kann eine beliebige Anzahl von Oberflächenelementen aufnehmen. Zusätzlich ermöglicht das TransparentContainer-Oberflächenelement, die eingefügten Oberflächenelemente über das definierte Layout anzuordnen.
Das TransparentContainer-Element können Sie folgendermaßen verwenden:
als Layout-Container (isLayoutContainer = true)
In diesem Fall verwenden Sie dieses Element zum Layout von anderen Oberflächenelementen. Das TransparentContainer-Element selbst hat keinen Tabstopp und wird im barrierefreien Modus von einem Screenreader nicht angesagt.
als gruppierender Container (isLayoutContainer = false)
In diesem Fall verwenden Sie dieses Element zum Gruppieren anderer Oberflächenelementen. Das TransparentContainer-Element hat dann analog dem Group-Element eine semantische Bedeutung. Es hat einen Tabstopp, und es wird von einem Screenreader vorgelesen.
TransparentContainer und Barrierefreiheit
Das Vorlesen durch Screenreader im Rahmen der Barrierefreiheit ist nur sinnvoll, wenn
TransparentContainer.isLayoutContainer = false.
Der Text für die Barrierefreiheit wird bei einem TransparentContainer aus den Werten, die für die Eigenschaften tooltip und accessibilityDescription des TransparentContainer definiert sind ermittelt.
Wenn die unter 1. genannten Eigenschaften nicht gesetzt sind, dann wird für die Barrierefreiheit der Text der Werte für die Eigenschaften tooltip und text des UI-Elements SectionHeader verwendet.
Wenn weder die unter 1. noch die unter 2. genannten Eigenschaften gesetzt sind, wird für die Barrierefreiheit der Text der Werte für die Eigenschaften tooltip und text des Label-UI-Elements verwendet, das zu dem TransparentContainer gehört.
TransparentContainer und SectionHeader
Um die Überschrift eines TransparentContainer von einem Screenreader vorlesen zu lassen, setzen Sie TransparentContainer.isLayoutContainer = false. Dies bedeutet, dass der TransparentContainer selbst semantische Informationen enthält.
Zusätzlich verwenden Sie im TransparentContainer einen SectionHeader.
Use Cases
TransparentContainer als Layout für ein Formular
Sie können den TransparentContainer als gruppierendes Element für ein Formular verwenden, indem Sie als Titel den SectionHeader einfügen und darunter weitere UI-Elemente.
Zusätzlich legen Sie folgendes fest: TransparentContainer.isLayoutContainer = false. Damit definieren Sie, dass der TransparentContainer an sich wichtig ist und semantische Bedeutung hat.
Wenn Sie das TransparentContainer-Element unter dem Aspekt der Barrierefreiheit als gruppierenden Container verwenden, dann können Sie den Titel dieser Gruppe folgendermaßen vergeben:
Wenn es keinen sichtbaren Gruppentitel geben soll, dann setzen Sie Werte für TransparentContainer.accessibilityDescription und TransparentContainer.tooltip.
Mit dem SectionHeader-Element als sichtbaren Gruppentitel, das dann die Eigenschaft accessibilityDescription ersetzt bzw. repräsentiert.
In den diskutierten Fällen gehen Sie wie nachfolgend vor:
Gruppieren ohne Titel
Setzen Sie die Eigenschaft isLayoutContainer=false.
Stellen Sie einen Text, der den Gruppentitel repräsentiert, in der Eigenschaft accessibilityDescription zur Verfügung.
Gruppieren mit Titel
Verwenden Sie das Element SectionHeader als Titel für das TransparentContainer-Element.
Verwenden Sie die Eigenschaft labeledBy, um das TransparentContainer-Element mit dem Element SectionHeader zu verbinden.
Der Text und der Tooltip des SectionHeader-Elements werden automatisch als accessibilityDescription des TransparentContainer-Elements ausgegeben, falls dessen accessibilityDescription und tooltip leer sind.
TransparentContainer als Melting-Group-ähnliches UI-Element
Sie können einen TransparentContainer als Klammer verwenden, um festzulegen, dass mehrere Felder inhaltlich zusammengehören, z.B. bei Währungsangaben.
Sie finden ein Beispiel im System im der Component DEMO_UIEL_LAYOUT in der Applikation DEMO_UIEL_MELTING_GROUP.
Ein TransparentContainer wird zu einem Melting-Group-artigen UI Element, falls folgende Bedingungen erfüllt sind:
keine Schachtelung weiterer Container im TransparentContainer
Im TransparentContainer sollten nur UI-Elemente wie InputFields, DropDown-Listen, TextViews, etc. angeordnet sein
die Eigenschaft isLayoutContainer muss auf FALSE gesetzt werden
Da der TransparentContainer inhaltlich zusammengehörige Felder verbindet müssen Sie hier festlegen, dass TransparentContainer.isLayoutContainer = FALSE.
es sollte ein Label mit Property islabelFor = <D des TransparentContainer> geben
Sie setzen den Label vor den TransparentContainer. Der Label muss auf den TransparentContainer verweisen. Die entsprechenden Eigenschaften des Label werden dann für die Barrierefreiheit-Texte verwendet.
Beispiel zum barrierefreien Gruppieren:
Wenn Sie beispielsweise einen Prüftext in einem TextView-Element hinter einem InputField-Element ausgeben möchten, verwenden Sie ein TransparentContainer-Element mit MatrixLayout (kein FlowLayout!), um das InputField-Element und dessen nachfolgenden Text zu gruppieren. Um das Ganze im Rahmen des bislang Gesagten barrierefrei zu machen, binden Sie noch ein Label an das TransparentContainer-Element (mit der Eigenschaft labelFor) und geben dem Feld und dem Prüftext noch einen zusätzlichen Tooltip. Der Tooltip wäre im Fall des Feldes hier optional, aber beim TextView-Element unbedingt erforderlich.
TransparentContainer nur für Layouting-Zwecke
In diesem Fall verwenden sie den TransparentContainer lediglich für reines Layouting.
Zusätzlich legen Sie fest, dass TransparentContainer.isLayoutContainer = true. Der Screenreader liest die Eigenschaft accessibilityDescription in diesem Fall nicht vor
Ordnen Sie bei der Verwendung als Layoutcontainer die Elemente so an, dass sich keine unerwarteten Verschiebungen der Tabulatorsequenz ergeben. Mit anderen Worten: Schachteln Sie TransparentContainer stets so, dass die Tabulatorsequenz nicht zwischen verschiedenen Gruppierungen hin- und herspringt.
Verwenden Sie keine zu hohe Verschachtelungstiefe.
Implementierungsdetails
|
Laufzeit-Klasse |
CL_WD_TRANSPARENT_CONTAINER |
Eigenschaften im View Designer
|
Name |
Typ |
Anfangswert |
Bindbar |
|---|---|---|---|
|
STRING |
(automatisch) |
nein |
|
|
Übersetzbarer Text |
ja |
||
|
WDUI_ARIA_LANDMARK |
None |
ja |
|
|
WDUI_CONTEXT_MENU_BEHAVIOUR |
inherit |
nein |
|
|
WDY_MD_UI_ELEMENT_REFERENCE |
nein |
||
|
WDY_MD_UI_ELEMENT_REFERENCE |
ja |
||
|
WDY_BOOLEAN |
true |
ja |
|
|
Übersetzbarer Text |
nein |
||
|
WDY_BOOLEAN |
false |
nein |
|
|
STRING |
ja |
||
|
WDY_BOOLEAN |
true |
nein |
|
|
WDY_MD_UI_ELEMENT_REFERENCE |
nein |
||
|
WDUI_SCROLLING_MODE |
none |
ja |
|
|
I |
0 |
nein |
|
|
I |
0 |
nein |
|
| styleClassName | STRING | ja | |
|
Übersetzbarer Text |
ja |
||
|
WDUI_VISIBILITY |
visible |
ja |
|
|
STRING |
ja |
Aggregationen im View Designer
Weitere Eigenschaften, die über Vererbung zur Verfügung stehen, sind in den dazugehörigen übergeordneten Klassen definiert. Die dazugehörigen Oberflächenelemente sind:
Dynamische Programmierung
Für die dynamische Programmierung stehen dieselben Eigenschaften, Ereignisse und Aggregationen zur Verfügung wie im View Designer. Beachten Sie dabei die unterschiedlichen Schreibweisen.
Dynamische Programmierung der Eigenschaften
|
View Designer Name |
Laufzeitname |
Typ |
|---|---|---|
|
ACCESSIBILITY_DESCR |
WDY_MD_TRANSLATABLE_TEXT |
|
|
ARIA_LANDMARK |
WDUI_ARIA_LANDMARK |
|
|
ariaLandmark: Application |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-APPLICATION |
|
|
ariaLandmark: Article |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-ARTICLE |
|
|
ariaLandmark: Banner |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-BANNER |
|
|
ariaLandmark: Complementary |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-COMPLEMENTARY |
|
|
ariaLandmark: Contentinfo |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-CONTENTINFO |
|
|
ariaLandmark: Form |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-FORM |
|
|
ariaLandmark: Main |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-MAIN |
|
|
ariaLandmark: Navigation |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-NAVIGATION |
|
|
ariaLandmark: None |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-NONE |
|
|
ariaLandmark: Search |
CL_WD_TRANSPARENT_CONTAINER=>E_ARIA_LANDMARK-SEARCH |
|
|
CONTEXT_MENU_BEHAVIOUR |
WDUI_CONTEXT_MENU_BEHAVIOUR |
|
|
contextMenuBehaviour: inherit |
CL_WD_TRANSPARENT_CONTAINER=>E_CONTEXT_MENU_BEHAVIOUR-INHERIT |
|
|
contextMenuBehaviour: provide |
CL_WD_TRANSPARENT_CONTAINER=>E_CONTEXT_MENU_BEHAVIOUR-PROVIDE |
|
|
contextMenuBehaviour: suppress |
CL_WD_TRANSPARENT_CONTAINER=>E_CONTEXT_MENU_BEHAVIOUR-SUPPRESS |
|
|
CONTEXT_MENU_ID |
WDY_MD_UI_ELEMENT_REFERENCE |
|
|
DEFAULT_BUTTON_ID |
WDY_MD_UI_ELEMENT_REFERENCE |
|
|
ENABLED |
WDY_BOOLEAN |
|
|
EXPLANATION |
WDY_MD_TRANSLATABLE_TEXT |
|
|
HANDLE_HOTKEYS |
WDY_BOOLEAN |
|
|
HEIGHT |
STRING |
|
|
IS_LAYOUT_CONTAINER |
WDY_BOOLEAN |
|
|
LABELED_BY |
WDY_MD_UI_ELEMENT_REFERENCE |
|
|
SCROLLING_MODE |
WDUI_SCROLLING_MODE |
|
|
scrollingMode: auto |
CL_WD_TRANSPARENT_CONTAINER=>E_SCROLLING_MODE-AUTO |
|
|
scrollingMode: both |
CL_WD_TRANSPARENT_CONTAINER=>E_SCROLLING_MODE-BOTH |
|
|
scrollingMode: none |
CL_WD_TRANSPARENT_CONTAINER=>E_SCROLLING_MODE-NONE |
|
|
SCROLL_LEFT |
I |
|
|
SCROLL_TOP |
I |
|
| styleClassName | STYLE_CLASS_NAME | STRING |
|
TOOLTIP |
WDY_MD_TRANSLATABLE_TEXT |
|
|
VISIBLE |
WDUI_VISIBILITY |
|
|
visible: none |
CL_WD_TRANSPARENT_CONTAINER=>E_VISIBLE-NONE |
|
|
visible: visible |
CL_WD_TRANSPARENT_CONTAINER=>E_VISIBLE-VISIBLE |
|
|
WIDTH |
STRING |
|
View Designer Name |
Laufzeitname |
Kardinalität |
|---|---|---|
|
CHILDREN |
0..n |
Sie finden ein Beispiel für einen TransparentContainer als Melting-Group-ähnliches UI-Element im System in der Component DEMO_UIEL_LAYOUT in der Applikation DEMO_UIEL_MELTING_GROUP.