Kraft auf Layout in einem SubView, dessen Dimensionen sich nicht ändern

Ich habe eine Custom ViewGroup mit einigen Ansichten im Inneren.

Als Reaktion auf ein Ereignis wird ein requestLayout aufgerufen und in OnLayout einige der Ansichten eine neue OnLayout .

Einer von ihnen behauptet seine Position, muss aber umgeordnet 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 zu rufen, funktioniert nicht.

Der einzige dreckige Trick, den ich gefunden habe, ist, einen Teil seiner Wertposition zu ändern, um die Layoutänderung zu erzwingen, aber ich denke, dass es einen besseren Weg geben sollte. Also, 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 in einem besseren Weg zu bekommen?

One Solution collect form web for “Kraft auf Layout in einem SubView, dessen Dimensionen sich nicht ändern”

Ich habe endlich die Lösung bekommen: Ich muss mich onMeasure und mich aus meiner Sicht aufrufen:

 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); ... _myview.measure(widthMeasureSpec, heightMeasureSpec); ... 

Es wird das LAYOUT_REQUIRED-Flag in das private Feld mPrivateFlags der Ansicht gesetzt, damit es zwingt, onLayout

  • So erstellen Sie benutzerdefinierte Viewgroup in Android mit Beispiel
  • Kann onMeasure beim Hinzufügen einer Ansicht zu einer ViewGroup übersprungen werden?
  • Android ViewGroup Crash: Versuchen Sie, aus dem Feld 'int android.view.View.mViewFlags' auf eine Nullobjektreferenz zu lesen
  • Android View.bringToFront () verursacht Flimmern
  • Verhindern / Fangen "IllegalArgumentException: Parameter muss ein Nachkomme dieser Ansicht sein" Fehler
  • Wie beleben Sie eine Veränderung in einer Auflage?
  • Android: bekommst Viewgroup aus der Ansicht?
  • Verwendung von dispatchDraw (Leinwand Leinwand)
  • Scrollen Sie die Bar zur benutzerdefinierten ViewGroup
  • Wie handle ich mit Klick in die untergeordneten Ansichten und berühre die übergeordneten ViewGroups?
  • Benutzerdefinierte ViewGroup-Fokusbehandlung
  • Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.