Überlappender Schatteneffekt bleibt in der Navigationsansicht der Navigationsschublade erhalten

9

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.

Aktualisiert:

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.

    
hata 26.09.2015, 15:27
quelle

2 Antworten

14

Endlich habe ich es geschafft.

Die Lösung verwendet FLAG_LAYOUT_NO_LIMITS zusammen mit FLAG_FULLSCREEN für die android.view.Window Objekt.

%Vor%

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.

    
hata 06.10.2015, 13:44
quelle
1

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%     
brianclements 30.09.2016 19:23
quelle