Ich versuche, ein Wort-Jumble-Spiel zu erstellen, bei dem man einen Buchstaben im durcheinandergewürfelten Wort nach rechts oder links zieht und die Buchstaben vertauscht werden. Was ist der beste Weg, um Elemente in einem RelativeLayout programmatisch neu anzuordnen, so dass, wenn der Buchstabe nach links gezogen wird, die Buchstaben, die die Kachel passiert, rechts vom gezogenen Buchstaben positioniert werden.
Ich habe so etwas als einfachen Test ausprobiert.
public static void moveTile(Tile tile, int x, RelativeLayout parent) {
if (x < tile.getWidth()) {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.LEFT_OF, tile.getId() - 1);
tile.setLayoutParams(params);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
p.addRule(RelativeLayout.RIGHT_OF, tile.getId());
Tile t = (Tile) parent.findViewById(tile.getId() - 1);
t.setLayoutParams(p);
}
parent.invalidate();
}
Aber dies führt zum Absturz der App mit einer Fehlermeldung über "Circular Abhängigkeiten kann nicht in einem RelativeLayout existieren", die ich verstehe, aber ich bin nur nicht sicher, welche andere Möglichkeit, dies zu tun.
Für jede Hilfe sind wir dankbar.