Vorgaben, die Sie festlegen, können ungültig werden. Wenn Sie beispielsweise
eine Vorgabe hinzufügen, die bewirken soll, dass Knoten
A
links vom Knoten B
platziert werden muss,
Sie aber Knoten A
aus dem Graphen entfernen, wird diese Vorgabe ungültig.
Sie macht einfach keinen Sinn mehr, selbst wenn sie nicht mit andere Vorgaben in Konflikt steht.
Die Layoutinstanz entfernt ungültige Vorgaben automatisch von Zeit zu Zeit, weil sie unnötig Speicher belegen.
Die Gültigkeitsprüfung wird während des Layouts durchgeführt.
Das Erzwingen einer Gültigkeitsprüfung ist normalerweise nicht erforderlich, aber wenn Sie möchten, können Sie sie
wie folgt aufrufen:
layout.validateConstraints();
Diese Anweisung entfernt alle ungültigen Vorgaben aus dem hierarchischen Layout
und bereinigt den Speicher. Die Vorgabenvalidierung prüft nicht, welche Vorgaben Konflikte aufweisen.
Die Haupteffekt der Validierung ist der, dass das Vorgabensystem anschließend weniger Speicher belegt.
Hinweis
Eine Vorgabe ist gültig, wenn sie aussagefähig ist. Zwei gültige Vorgaben sind widersprüchlich, wenn das System
sie nicht gleichzeitig erfüllen kann.
Ungültige Vorgaben können nicht widersprüchlich sein, weil sie bedeutungslos sind.
Deshalb finden Vorgabenvalidierung und Vorgabenauflösung in unterschiedlichen Phasen statt.
Bei der Vorgabenvalidierung wird ein schneller lokaler Test durchgeführt.
Ungültige Vorgaben werden vollständig aus der Layoutinstanz entfernt.
Widersprüchliche Vorgaben sind von der Validierung nicht betroffen.
Bei der Vorgabenauflösung wird geprüft, ob ein Satz gültiger Vorgaben miteinander in Konflikt steht.
Die Vorgabenauflösung ist somit ein komplexer Prozess in einem Netz, das aus mehreren
zusammengehörigen Vorgaben besteht.
Die Vorgabenauflösung entscheidet, welche Vorgaben gelöst werden können und welche nicht.
Allerdings entfernt die Vorgabenauflösung keine widersprüchlichen Vorgaben aus der
Layoutinstanz, sonder liefert eine Lösung, die einige Vorgaben ignorieren kann.