Ich habe eine benutzerdefinierte ViewGroup
mit einigen Ansichten im Inneren.force onLayout in einer Unteransicht, deren Abmessungen sich nicht ändern
Als Reaktion auf ein Ereignis wird ein requestLayout aufgerufen, und in erhalten einige der Ansichten eine neue Layoutposition.
Einer von ihnen behält seine Position bei, muss aber im Inneren neu angeordnet werden. Die Onlayout-Methode dieser Ansicht wird jedoch nicht aufgerufen, da sich ihre Layoutposition nicht ändert. Der Versuch, requestLayout
, forceLayout
oder invalidate
in dieser Ansicht aufzurufen, funktioniert nicht.
Der einzige schmutzige Trick, den ich gefunden habe, ist, etwas von seiner Wertposition zu ändern, um das Layout zu ändern, aber ich denke, dass es einen besseren Weg geben sollte. So, jetzt mache ich etwas (schrecklich) wie:
int patch = 0;
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) {
...
_myView.patchedLayout(patch);
_myview.layout(l1, t1 , r1, t1+patch);
patch = (patch+1) % 2;
...
}
Jeder Weg, um das gleiche Ergebnis auf eine bessere Weise zu bekommen?