Ich füge dynamisch Ansichten zu einem relativen Layout hinzu und definiere sie programmatisch. Die Ansichten können auf dem Bildschirm verschoben werden, sodass sich ihre Position ändert.Dynamische Einstellung von Ansichten mit der Einstellung LayoutParams.addRule an die letzte Position der Ansicht
Wenn ich versuche, eine Ansicht (button2) unterhalb einer anderen Ansicht (button1) festzulegen, wird button2 an der alten Position von button1 platziert (der Standardposition, an der Ansichten hinzugefügt werden, bevor sie verschoben werden). Ich habe Bilder verlinkt, um das besser zu vermitteln.
Dies ist das ursprüngliche Layout
-Layout nach Button2 neu positioniert wird
Ich habe einen Hintergrund LinkedList die Verfolgung aller Ansicht, die Änderungen und Ansichtsattribute für das Layout, wenn das einen Unterschied macht.
Hier sind die Code-Funktionen:
wie ich Neupositionierung Button1:
Buttons b = (Buttons) viewIndex;
positioningLayout = new RelativeLayout.LayoutParams(b.getLayoutParams());
positioningLayout.addRule(RelativeLayout.CENTER_VERTICAL);
b.setLayoutParams(positioningLayout);
baseLayout.addView(b);
Ansichten unter einem anderen Ansicht Codefragment Neupositionierung:
Buttons b = (Buttons) viewIndex;
positioningLayout = new RelativeLayout.LayoutParams(b.getLayoutParams());
positioningLayout.addRule(RelativeLayout.BELOW, viewIdFromList.intValue());
b.setLayoutParams(positioningLayout);
b.invalidate();
Wie ich hinzufüge die Ansichten zum Layout.
uiList.addView(new Buttons(this), "BUTTON");
setDialogView(uiList.getLast());
showDialog(SET_ID);
reloadUI();
setDialogView läuft gerade den Blick auf den Dialog set_id so dass ich manuell eine ID zu der Ansicht (zum Testen) zuweisen. reloadUI() findet nur die letzte zum Hintergrund LinkedList hinzugefügte Ansicht und fügt sie zur RelativeLayout mit .addView hinzu;
Wenn Sie mehr Code benötigen, lassen Sie es mich bitte wissen. Fehle ich einen Anruf, um die Ansichtslayouts zu aktualisieren, nachdem ich die untergeordneten Ansichten relativLayout geändert habe? Es sieht so aus, als ob die Ansicht visuell neu positioniert wird, aber die tatsächlichen LayoutParams werden nicht aktualisiert. Wenn Sie also Button2 auf Button1 setzen, erhält es die alte Position.
Gibt es eine Möglichkeit, eine relative Layoutansicht zu erzwingen?
Können Sie die wichtigsten Layout zeigen? –
Die Benutzeroberfläche wird vollständig dynamisch erstellt, so dass kein XML verwendet wird:/ – Sevros