2015-11-15 14 views
19

Jak pozbyć się elewacji na pasku stanu? Jeśli ustawię w AppbarLayout aplikacji: elewacja na 0dp, rzędna nie pojawi się już na pasku stanu, ale również nie będzie poniżej paska narzędzi AppbarLayout.Elewacja appbarlayout systemu Android pojawia się na pasku stanu

Jak uzyskać elewację pod paskiem AppbarLayout?

Oto zrzut ekranu z tego, co mam na myśli: puush link, zauważyć cień na pasku stanu :(

Dzięki

+0

Czy możesz opublikować motyw swojej działalności? – Jamal

+0

Czy masz flagę stanu z rysowaniem behing? –

+0

Nie jestem pewien co masz na myśli @NikolaDespotoski –

Odpowiedz

21

Naszą troską jest o cieniu AppBarLayout widoczne, gdy na pasku stanu jest przezroczysty mająca nieprzezroczysty!. pasek stanu nie jest opłacalne w każdym czasie. dzieje się tak na Lollipop & powyżej tylko z powodu dynamicznego renderowania cieni. na Marshmallow zły cień wygląda jeszcze gorzej.

Najlepsze rozwiązanie

Twój główny układ powinien zawsze mieć android:fitsSystemWindows="true", w przeciwnym razie twój interfejs nie będzie rysował za paskiem stanu.

Teraz owinąć AppBarLayout wewnątrz innego CoordinatorLayout, który ma android:fitsSystemWindows="false". Zapobiegnie to cień przepełnieniu na pasku stanu


Inne obejścia (nie zalecane)

W swoim stylu usunąć statusBarColor:

<item name="android:statusBarColor">@android:color/transparent</item> 

Więc tematem będzie:

<style name="AppTheme.NoActionBar"> 
<item name="windowActionBar">false</item> 
<item name="windowNoTitle">true</item> 
<item name="android:windowDrawsSystemBarBackgrounds">true</item> 
</style> 

Możesz także po prostu zrobić app: elevation = "0dp" na appbarlayout, ale to również usuwa cień na dole.

+0

Wielkie dzięki! Działa. Oto przykład dla wszystkich: https://gist.github.com/sahilshekhawat/00d24fb217f74f06fca27d133cb10d1a –

Powiązane problemy