Ich habe ein CardView mit den folgenden Ansichten:
%Vor% Wenn ich mein ListView
view_2 öffne, wird auf Visible.GONE
gesetzt, damit Sie es nicht sehen können.
Jetzt habe ich das ExpandAnimation
von diesem Blog verwendet. Hier haben Sie den Code:
Ich benutze es in meinem AdapterView
:
Ich habe jetzt nur ein Problem: Wenn ich ein Element in meiner Liste zum ersten Mal expandiere, erscheint es sofort ohne Animation und danach funktioniert das Schließen und Öffnen reibungslos mit Animation.
Weiß jemand, warum die erste Öffnung ohne Animation geschieht, aber jeder Klick danach die richtige Animation auslöst?
Ich brauche auch die Animation für den ersten Klick.
BEARBEITEN
Liegt es daran, dass die Sichtbarkeit meiner Ansichten anfänglich GONE
ist und die Höhe unbekannt ist? Wenn ja: Wie könnte ich das lösen?
BEARBEITEN 2
Nein, meine XML-Layoutdatei setzt die Ansicht nicht auf GONE
:
Ich habe die View.GONE
in meinem ListAdapter:
Bearbeiten Sie 3
Vielleicht ist es wichtig zu wissen, dass der Container meiner Kartenansichten eine Recycleransicht ist:
%Vor%Ich brauche wirklich eine Lösung dafür. Es stört viele der benötigten Funktionen.
Bearbeiten 4
Ich habe einige Log-Outputs hinzugefügt:
%Vor% Wie Sie sehen können, ist die erste marginStart
der Erweiterung 0, muss aber -156 sein.
Sie haben Ihren XML-Code nicht angezeigt, aber ich nehme an, Sie haben android:visibility="gone"
dort. Wenn ja, sollten Sie es aus der Layoutdatei entfernen (so dass es standardmäßig sichtbar ist). Wenn es weg sein sollte, rufe setVisibility(View.GONE)
nach der Inflation an. Auf diese Weise erhalten Sie das gleiche Ergebnis, aber die Ansicht könnte auch ihre Abmessungen erhalten.
Wie Ihr Code steht, liest er die Werte für die Ränder, wie Sie sie initialisiert haben, als 0,0.
Sie müssen die Ansicht auf VISIBLE
setzen, um Margen zu erhalten, wenn sie auf GONE
eingestellt ist, hat sie keine Ränder.
Bestellen Sie Ihren Code so:
%Vor%Initialisieren Sie diese Variablen nicht.
%Vor%oder auch das:
%Vor%Sie müssen nur diejenigen initialisieren, die einen Startwert für Ihren Algorithmus benötigen. Wie Bool Werte.
%Vor%Ich habe Probleme mit dieser Codezeile:
%Vor%Ich verstehe nicht, warum Ihr Code mit dieser Zeile keine Warnung oder einen Fehler in Ihrem Logcat anzeigt.
(view.getVisibility() == View.VISIBLE)
gibt keinen Wert der Sichtbarkeit zurück.
Es ist kein boolescher Wert. Es kann einen von drei Werten zurückgeben.
Ich schlage vor, es zu ändern:
%Vor% Durch die Verwendung von GONE
wird nur der von dieser Ansicht belegte Speicherplatz reduziert. INVISIBLE
behält den von der Ansicht belegten Speicherplatz. Wenn Sie nicht möchten, dass Ihre Layoutelemente in eine bestimmte Position gezwungen werden, würde ich GONE
bevorzugen.
Ich hoffe, das hilft, lass es mich wissen.
Tags und Links android visibility android-animation android-view onclick