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
  • RelativeLayout: Richten Sie die Ansicht auf das Kind der Geschwister-Viewgroup aus
  • Geheimer Android-Build-Prozess
  • Kann onMeasure beim Hinzufügen einer Ansicht zu einer ViewGroup übersprungen werden?
  • Wie man eine Pin-Marker auf Bildansicht in Android hinzufügen
  • Umsetzung Drag & Drop in Lebkuchen
  • Android - Verstecken
  • Ansichten innerhalb einer benutzerdefinierten ViewGroup werden nicht angezeigt
  • Android machen benutzerdefinierte Layout Form
  • Wie erstelle ich eine Schaltfläche, die mehrere Ansichten enthält?
  • Android: bekommst Viewgroup aus der Ansicht?
  • Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.