Es gibt offenbar eine Fehler in Android, das die View.bringToFront
.
Wenn ich Ansichten in einer GridView angeordnet habe und eine Ansicht durch den Aufruf von bringToFront() in den Vordergrund bringen möchte, wird sie möglicherweise an die untere rechte Position in der GridView verschoben.
Irgendetwas ist da faul, deshalb kann ich bringToFront() nicht verwenden. Wenn ich es nicht aufrufe, funktioniert alles gut. Aber die Ansichten überschneiden sich - wenn ich die Skalierungsanimation verwende, um eine Ansicht zu vergrößern, wird sie teilweise von den Ansichten unten und rechts verdeckt.
Ich habe den Quelltext von bringToFront überprüft und er ruft parent.bringChildToFront(...)
es ist diese Methode
public void bringChildToFront(View child) {
int index = indexOfChild(child);
if (index >= 0) {
removeFromArray(index);
addInArray(child, mChildrenCount);
child.mParent = this;
}
}
es scheint Entfernt den Blick von sich selbst! Ohne Gnade! Ist eine ViewGroup so dumm, dass sie die Z-Indizes nicht anders verwalten kann als durch das Umherschieben von Steuerelementen? Wenn GridView sein Kind entfernt und dann wieder hinzufügt, wird es am Ende des Grids platziert!
Gibt es irgendetwas, das ich tun kann, um eine Ansicht über anderen anzuzeigen, ohne auf einige Hacks zurückzugreifen? Eine Sache, die mir in den Sinn kommt, ist, eine andere Ansicht über der GridView zu erstellen, die über der Ansicht zu sein scheint, die ich versuche, nach vorne zu bringen(), aber ich mag diese Lösung nicht.