5

我最近碰到了協調器佈局的問題。當我嘗試創建簡單的摺疊工具欄佈局(如this示例)時,工具欄apears處於狀態欄下方的屏幕截圖中(在preLolipop設備上一切正常,因爲應用程序不會在狀態欄下繪製)。我的活動佈局摺疊工具欄 - 狀態欄下的工具欄

toolbar under statusbar (see back arrow)

代碼片段:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fitsSystemWindows="true" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsingToolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/imageCalculationDetail" 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:background="@drawable/ic_dummy_calculation" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" 
       app:layout_collapseMode="parallax"/> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="@color/transparent" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.NestedScrollView 
     android:id="@+id/scroll" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="fill_vertical" 
     android:clipToPadding="false" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <include layout="@layout/container"/> 

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

</android.support.design.widget.CoordinatorLayout> 

我的樣式(僅V21),其中BaseAppTheme父Theme.AppCompat.Light.NoActionBar:

<style name="AppTheme" parent="BaseAppTheme"> 
     <item name="android:windowTranslucentStatus">true</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="android:colorAccent">@color/colorPrimary</item> 
     <item name="android:colorButtonNormal">@color/button_state_list</item> 
     <item name="android:statusBarColor">@color/transparent</item> 
    </style> 
+0

發佈您的styles.xml文件。 –

+0

我已將樣式添加到問題 –

+0

您的清單文件如何?你有指定正確的風格嗎?也張貼那一個。因爲我在棒棒糖模擬器上嘗試了相同的佈局和一切正常。 –

回答

-1

套用斷點以包括一個邊緣頂部的棒棒糖設備或以上的工具欄。

值/ dimens.xml

<dimen name="toolbar_margin_top">0dp</dimen> 

值-V21/dimens.xml

<dimen name="toolbar_margin_top">24dp</dimen> 

的再佈局:

<android.support.v7.widget.Toolbar 
    ..... 
    android:layout_marginTop="@dimen/toolbar_margin_top" 
+0

這看起來更像是一種解決方法,我想要一些乾淨的解決方案,[示例]中沒有頂部邊距(http://antonioleiva.com/ collapsing-toolbar-layout /) –

+0

如果你想有一個透明的狀態欄,這是修復它的唯一方法。否則,您需要在樣式中禁用android:windowDrawsSystemBarBackgrounds屬性: false

0
<item name="android:windowDrawsSystemBarBackgrounds">true</item> 

通過把這個在你的風格,你告訴Android,你的應用程序負責r繪製系統欄後面的內容。這就是爲什麼如果設置了這個標誌,其他答案中的「骯髒的黑客攻擊」在技術上是正確的。

除非你有一個明確的標誌爲真(我懷疑不是)的原因,否則將其設置爲false,以便操作系統正確地爲你補償你的內容。您的狀態欄應該仍然是半透明的。

+0

不設置此值爲false不會產生任何影響 –

0

嘗試通過從ImageView的android:fitsSystemWindows="true" ..

<ImageView 
      android:id="@+id/imageCalculationDetail" 
      android:layout_width="match_parent" 
      android:layout_height="200dp" 
      android:background="@drawable/ic_dummy_calculation" 
      android:scaleType="centerCrop" 
      app:layout_collapseMode="parallax"/> 
+0

刪除此標誌後,工具欄將處於狀態欄,但狀態欄停止透明和整個摺疊工具欄被分離,這是不希望的效果 –

+0

你會請張貼截圖嗎? –

5

嗯,我看着辦吧,問題是,我在BaseAppTheme的toolbarStyle有

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

(其他actvities,一切正常,用於摺疊半透明狀態欄的工具欄)。設置後

android:fitsSystemWindows="false" 

到我的工具欄,一切工作正常。

0

對我來說

在XML添加屬性fitSystemWindows = 「假」 到工具欄的工作。

<android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:fitsSystemWindows="false" 
       app:popupTheme="@style/AppTheme.PopupOverlay" 
       app:layout_collapseMode="pin"/>