Erzwingen Sie eine Aktivität im Vollbildmodus, um bei Fortsetzen erneut zu messen / neu zu zeichnen?

8

Bearbeitet, um weitere Details hinzuzufügen: (ursprünglich vor fast zwei Monaten gefragt ... haben immer noch keine Lösung gefunden)

Ich habe eine Aktivität mit einer etwas komplizierten Sichtweise. Technisch gesehen nicht kompliziert ... da ist gerade viel los. Alle Aktivitäten in dieser bestimmten App sind auf FullScreen NoTitleBar eingestellt und alle sind auf Querformat ausgerichtet. Ich merke schon früh in der Entwicklung, wenn die App ausgeblendet ist und dann wieder geht, gab es eine seltene Tendenz, dass das Layout vertikal nach unten rutscht, als ob es Platz für die Titelleiste und die Statusleiste schaffen würde.

Später in der Entwicklung ruft die App jetzt zu verschiedenen externen Absichten auf. Ich merke jetzt, dass es mehr eine Tendenz gibt, diese gleiche Verschiebung zu machen, wenn ich von einer extern gehandhabten abgefeuerten Absicht fortfahre (wie das Erstellen einer "Auswahl" Absicht oder die Auswahl eines Bildes). Ich kann es mit genau den gleichen Schritten inkonsistent reproduzieren ... manchmal passiert es manchmal nicht. Es scheint, als gäbe es zwischen verschiedenen Phasen des Messens und Auslegens eine Wettlaufsituation. Ich gehe davon aus, dass einer dieser Schritte, die das System für mich ausführt, ist, nach Vollbild und Nichtlibelle zu suchen und die notwendige Verschiebung vorzunehmen. Dies passiert wahrscheinlich in einigen Fällen zu spät.

Ich habe eine Reihe von Logging, und Aufrufe von invalidate (), requestLayout (), etc. versucht, vielleicht die Race-Bedingung zu fangen, aber das Problem scheint außerhalb meiner Layouts. Die oberen () und unteren () Werte meines Root-Layouts sind immer 0 und die Höhe meines Bildschirms, selbst wenn ich dies protokolliere, während das Problem auftritt.

Gibt es eine andere Methode des WindowManager oder eines anderen Objekts, das mit der Systemansicht zusammenhängt, kann ich eine vollständige Neuberechnung erzwingen, neu zeichnen, erneut nach aktuellen Design- / Stil-Flags suchen?

    
Rich 01.12.2010, 20:02
quelle

8 Antworten

9

Ich hatte genau das gleiche Problem und probierte auch mehrere aproches (wie die oben genannten). Keine von ihnen hat funktioniert. Allerdings habe ich die folgende Problemumgehung gefunden:

%Vor%

Die Ansicht wird bei diesem Vorgang ein kurzes Flackern machen, aber zumindest bleibt sie nicht im Kreis. Eine saubere Lösung muss noch gefunden werden. Allerdings unterstützt dies Ihre These, dass es ein Timing- oder Rassenproblem gibt.

    
r-hold 21.03.2011, 17:25
quelle
1

Haben Sie das in onResume () versucht?

%Vor%     
gnclmorais 01.02.2011 11:35
quelle
1

In meinem Fall wurde dieses Verhalten durch die Rückkehr vom Sperrbildschirm ausgelöst. Keine Ahnung warum aber nach dem Hinzufügen der leeren überladenen Funktion wurde es behoben (aber ich habe es nur auf meinem HTC Wilfire getestet). Es könnte ein anderer Bug sein.

%Vor%     
Paweł Prażak 20.12.2011 23:56
quelle
0

Ich bin mir nicht sicher, ob es funktioniert, aber Sie können dies mit dieser Methode versuchen:

%Vor%

Wenn das nicht automatisch funktioniert, fügen Sie der Methode onDraw (Canvas) die Anweisungen hinzu, die zum Entfernen der Titelleiste erforderlich sind, und führen Sie ähnliche Anpassungen durch, die Ihre Aktivität möglicherweise beim Start durchführt.

Ich hoffe, das hilft.

    
Luis Miguel Serrano 12.12.2010 03:47
quelle
0

Hey Reich, Ich hatte genau das gleiche Problem. Ich habe es behoben, indem ich diese Optionen im Manifest-XML eingestellt habe (es scheint, dass die API-Schnittstelle ein wenig fehlerhaft ist). Details hier: Ссылка

opticron

    
opticron 04.01.2011 04:23
quelle
0

Haben Sie FullScreen NoTitleBar in Ihrem Manifest oder Code festgelegt? Wenn Sie Code verwenden, kann es sein, dass es gerendert wird, bevor Ihr Code einsetzt?

%Vor%

Ich verstehe, dass Sie Themen für einzelne Aktivitäten in einer Anwendung festlegen können. Machst du? und stehen sie in Konflikt mit Ihren Anwendungseinstellungen?

    
FrinkTheBrave 31.01.2011 19:33
quelle
0

Ich habe eine Lösung gefunden:

%Vor%     
tialawllol 19.06.2012 13:52
quelle
0

Ich habe es behoben, indem ich das Thema für die Anwendung und nicht für einzelne Aktivitäten festgelegt habe.

%Vor%

Das hat für mich funktioniert. Dieses Problem tritt auf, wenn die nächste Aktivität, die wir starten, keine Vollbildaktivität und die aktuelle Aktivität eine Vollbildaktivität ist.

    
Isham Muhammed 01.11.2012 15:15
quelle

Tags und Links