Erweiterung von FrameLayout, untergeordnete Ansichten werden nicht mehr angezeigt

7

Dies ist mein Code mit FrameLayout :

%Vor%

Die ImageView zeigt gut.

Jetzt habe ich ein benutzerdefiniertes Layout von FrameLayout, z. MyFrameLayout.

In MyFrameLayout möchte ich, dass die Höhe des Layouts immer die Hälfte der Breite beträgt, also lautet mein Code:

%Vor%

Dann benutze es in xml:

%Vor%

Aber jetzt ist die innere ImageView verschwunden.

Ich denke, ich implementiere onMeasure oder onLayout nicht korrekt. Ich denke, ich muss auch die Kinderansichten anpassen. Aber ich weiß nicht, was ich jetzt tun soll.

AKTUALISIEREN

Nach dem Kommentar von TheDimasig habe ich gerade meinen Code überprüft und meine Frage aktualisiert. Danke

    
Freewind 11.09.2012, 08:06
quelle

3 Antworten

14

Am einfachsten ist es, die Measespec in onMeasure zu ändern, aber immer noch super:

%Vor%

Auf diese Weise erhalten Sie die gewünschten Dimensionen, müssen aber die Kinder nicht manuell vermessen.

    
anakin78z 22.04.2014 22:20
quelle
7

Sie sehen keine untergeordneten Ansichten, da Sie die Methode onMeasure nicht korrekt überschreiben. Sie könnten die Superklasse die Logik implementieren lassen (so dass die untergeordneten Ansichten angezeigt werden) und dann die berechnete Breite und Höhe für MyFrameLayout :

zurücksetzen %Vor%

Wenn das von Ihnen gepostete Layout nicht Ihr komplettes Layout ist, funktioniert mein Code möglicherweise nicht.

    
Luksprog 11.09.2012 10:21
quelle
2

Ich nehme an, dass Sie in Ihrer Methode onMeasure vergessen haben, OnMeasure für alle untergeordneten Ansichten, einschließlich Ihrer ImageView, aufzurufen. Sie müssen durch alle Ihre Kind-Ansichten gehen und auf sie etwas wie folgt aufrufen:

%Vor%     
Dmitriy Tarasov 11.09.2012 08:47
quelle

Tags und Links