Ich habe die Projektvorlage "Navigation Drawer Activity" von Android Studio verfeinert, die Toolbar , v7.app.ActionBarDrawerToggle und NavigationView anstelle von verwendet das NavigationDrawerFragment (und layout / fragment_navigation_drawer.xml).
Es funktioniert perfekt. Dann gehe ich weiter. Ich habe mein Navigationsschubladen-Projekt im Modus immersive-sticky (Vollbildmodus).
%Vor%Ein Problem ist gestiegen. Die überlappenden Schatteneffekte auf der Navigationsansicht, die von der Statusleiste (auf der oberen Seite) und der Navigationsleiste (auf der unteren Seite) abgeleitet sind, bleiben still.
Wie kann ich sie loswerden?
Ich habe Quellen von v7.app.ActionBarDrawerToggle oder NavigationView von Android überprüft, aber vergeblich.
Danke für den Ratschlag von @ lcw_gg, ich habe den Schatten der Statusleiste komplett entfernt (während der Schatten der Navigationsleiste bleibt). Das heißt, android:windowFullscreen
attribute true
in Layout-XML zu setzen.
Aber ich möchte das in Java-Code machen. Ich habe einen Weg gefunden und wahrscheinlich entspricht es dem xml-Weg:
%Vor% Und damit brauchen Sie diese beiden Flags - View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
und View.SYSTEM_UI_FLAG_FULLSCREEN
- nicht mehr auf die decorationView
zu setzen.
Trotzdem kann ich nicht den Weg finden, den Schatten der Navigationsleiste loszuwerden. Ich warte auf eine Lösung.
Endlich habe ich es geschafft.
Die Lösung verwendet FLAG_LAYOUT_NO_LIMITS
zusammen mit FLAG_FULLSCREEN
für die android.view.Window
Objekt.
Das hat die beiden Schatten perfekt beseitigt.
lcw_ggs Kommentar war ein sehr nützlicher Hinweis, android.view.Window
zu manipulieren. Besonderer Dank an ihn.
Für diejenigen, die das gleiche Problem wie oben haben, aber die Systemstatusleiste immer anzeigen lassen möchten (also nicht WindowManager.LayoutParams.FLAG_FULLSCREEN
verwenden), müssen Sie etwas mehr tun, um zu verhindern, dass ein merkwürdiger Inhalt unter die Statusleiste kriecht auf Lutscher. Ich habe das Problem auf Kitkat nicht bemerkt, als ich es getestet habe.
Ich benutzte zwei Navigationsschubladen (links und rechts) und hatte seltsamerweise nur den LINKEN, der den Schatten auf den Boden warf. Sobald WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
wie in der angenommenen Antwort angezeigt wurde, verschwand der Schatten, aber der Inhalt wurde unter der Statusleiste und der Navigationsleiste über der Statusleiste eingeblendet. den ganzen Weg bis zur Geräteblende.
Um das zu beheben, müssen Sie Ihr Theme in v21 styles.xml überschreiben, um Folgendes einzuschließen:
%Vor%Dadurch wird der Inhalt unterhalb der Statusleiste verschoben und verhindert, dass die Navigationsleiste über der Statusleiste angezeigt wird.
Zusätzlich zu den obigen Einträgen in meinen v21-Stilen sah mein Aktivitätscode wie folgt aus:
%Vor%