Durum çubuğunun altında çakışan araç çubuğu


169

Etkinliğimde appcompat v21 araç çubuğuna sahip olmak istiyorum. Ancak uyguladığım araç çubuğu durum çubuğunun altında çakışıyor. Nasıl düzeltebilirim?

çakışan araç çubuğu

Etkinlik düzeni xml aşağıdadır:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

Araç çubuğu görünümü:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Tema stili:

<style name="AppTheme" parent="MaterialNavigationDrawerTheme.Light.DarkActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

ThemeBaşvurunuzu nasıl özelleştirdiniz ? onları gönderin.
SilentKnight

içinde CoordinatorLayoutstackoverflow.com/a/47906087/2201814: Bu deneyebilirsiniz
MHSFisher

androidx.coordinatorlayout.widget.CoordinatorLayout ile sorunla karşılaşanlar için android'i ayarlamalıdır: fitsSystemWindows = "yanlış" .Bu benim için çalıştı ... aşağıdaki SO kullanıcılarından biri tarafından önerildiği gibi ..
Muahmmad Tayyib

Yanıtlar:


273

android:fitsSystemWindows="true"Düzeninizin kök görünümünde kullanın (davanızdaki LinearLayout). Ve android:fitsSystemWindowsbir

durum çubuğu gibi sistem pencerelerine göre görünüm düzenini ayarlamak için internal niteliği. Değer doğruysa, bu görünümün dolgusunu sistem pencerelerine yer bırakacak şekilde ayarlar. Yalnızca bu görünüm gömülü olmayan bir etkinlikteyse geçerli olur.

"True" veya "false" gibi bir boole değeri olmalıdır.

Bu ayrıca, bu tür bir değer içeren bir kaynağa ("@ [paket:] türü: ad" biçiminde) veya tema özelliğine ("? [Paket:] [tür:] ad" biçiminde) başvuru olabilir. .

Bu, fitsSystemWindows global öznitelik kaynağı simgesine karşılık gelir.


22
@AimanB, temayı şu şekilde ayarlayarak global olarak ayarlayabilirsiniz <item name="android:fitsSystemWindows">true</item>
Samir


9
Bu sorun android ekledikten sonra bile gelecektir: fitsSystemWindows = kök düzenine "true", Tarzınız <item name = "android: statusBarColor"> @ android: color / şeffaf </item> içeriyorsa. Sadece bu soruyu okuyanlar için bahsedildi.
Sakkeer Hussain

3
Aynı sorunu yaşıyorum ve android: fitsSystemWindows = "true" benim için çalışmadı. Herhangi biri bu yazı lütfen çözümler var.
Jatin

1
Bu cevap sorunumu çözdü. Ama şimdi 0 dolgu ile tüm android tost bulmak!
kds23

18

Bunu v21 / styles.xml dosyasına ayarlamanız yeterlidir

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="android:statusBarColor">@color/colorPrimaryDark</item>

ve emin ol

 <item name="android:windowTranslucentStatus">false</item>

1
app: layout_behavior = "@ string / appbar_scrolling_view_behavior" gibi bir şeyiniz varsa kaldırın! @TheHunter
Zahra.HY

set <item name = "android: windowTranslucentStatus"> yanlış </item>
Zahra.HY

10

Benim için sorun, bir örnekten bir şey kopyalayıp

<item name="android:windowTranslucentStatus">true</item>

Sadece bunu kaldırmak sorunumu çözdü.


10

Cevapların hiçbiri benim için işe yaramadı, ama sonunda android:fitSystemWindowskök görünümüne ayarladıktan sonra nihayet işe yaradı (bunları v21 stilinde ayarladım):

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">false</item>

AS varsayılan olarak koyduğu için aşağıdaki satıra sahip olmadığınızdan emin olun :

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

6

Cevapların hiçbiri benim için işe yaramadı, ama sonunda belirledikten sonra bu işe yaradı:

android:fitsSystemWindows="false"

Ana faaliyet düzeni dosyasında pek çok yerde önerilmiyor ama benim için çalışıyor ve günümü kurtarıyor


Bu, düzendeki kök görünümüm bir androidx.coordinatorlayout.widget.CoordinatorLayouttür olduğunda da benim için çalıştı .
Faheem Ezani

5

Aşağıda belirtilen tüm satırları /res/values-v21/styles.xml dosyasından kaldırdım ve şimdi iyi çalışıyor.

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


 <item name="windowActionBar">false</item>
 <item name="android:windowDisablePreview">true</item>

 <item name="windowNoTitle">true</item>

 <item name="android:fitsSystemWindows">true</item>

0

Google dokümanlarına göre, uygulama temasında fitsSystemWindows özelliğini kullanmamalıyız, düzen dosyalarında kullanılması amaçlanmıştır. Temalarda kullanmak, tost mesajlarında soruna neden olabilir.

Sorunu buradan kontrol edin ve burada neden olan sorun örneği

<item name="android:fitsSystemWindows">true</item>

Doğru yol kullanma örneği ve windowTranslucentStatus ile iyi çalışan örnek.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"

android:fitsSystemWindows="true"

android:layout_width="match_parent"
android:layout_height="match_parent"
> 


<include layout="@layout/toolbar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
</include>

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    android:background="@color/white"
    android:animateLayoutChanges="true"
    app:headerLayout="@layout/navigation_drawer_header"
    app:menu="@menu/navigation_drawer_menu" />

</android.support.v4.widget.DrawerLayout>

0

Stil veya stilde aşağıdaki satırları kaldırma (21)

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowTranslucentStatus">false</item>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.