Nach diesem CommonsWare-Beispiel konnte ich meine RelativeLayout-Unterklasse mit meinem Layout verbinden, das in einem XML-Layout mit Merge-Root beschrieben wurde. Meine einzige Sorge ist, dass ich meine RelativeLayout-Parameter in XML nicht beschreiben kann.
Mein XML-Layout:
%Vor%Ich denke, das Problem besteht darin, dass die Zusammenführung mit den Kindern des Zusammenführungs-Tags und nicht mit dem Zusammenführen erfolgt. Irgendeine Idee, wie ich meine Parameter in der Zusammenführung erhalten kann, um mein RelativeLayout zu beeinflussen?
Meine RelativeLayout-Unterklasse, ohne Paketdeklaration und Importe:
%Vor%Ich weiß, dass ich alles zu einem LayoutParams hinzufügen kann, und füge dann meine MyRelativeLayoutSubclass mit diesen LayoutParams hinzu, aber ich möchte entkommen, das ist viel unnötiger Code.
Ich denke, das Problem besteht darin, dass die Zusammenführung mit den untergeordneten Elementen des Merge-Tags und nicht mit der Zusammenführung selbst erfolgt.
AFAIK, Sie haben Recht. <merge>
ist ein Platzhalter, kein ViewGroup
.
Ich weiß, dass ich alles zu einem LayoutParams hinzufügen kann, und füge dann meine MyRelativeLayoutSubclass mit diesen LayoutParams hinzu, aber ich möchte entkommen, das ist viel unnötiger Code.
Erstellen Sie eine XML-Layoutdatei, die ein MyRelativeLayoutSubclass
-Element enthält, und legen Sie Ihre Attribute dort ab. Dann blase das Layout auf.
Das Extrahieren aller Attribute in Style war eine Lösung für mich. Als Bonus ist es abhängig von der Bildschirmgröße im Gegensatz zu den hartcodierten Attributen oder Java-Code. Vielleicht kannst du weiter gehen und es in die Themenattribute einfügen.
%Vor%Tags und Links android user-interface xml layout commonsware