0

Ich habe ein seltsames Problem mit meinen Layouts. Ich habe eine CoordinatorLayout mit einer CollapsingToolBarLayout drin. Ich habe eine transparente Statusleiste, um das Bild oben besser anzuzeigen. Also habe ich fitsSystemWindow auf diesen ImageView gesetzt. Das Problem, das ich jetzt habe, ist, dass der obere Teil der Symbolleiste, wenn die Werkzeugleiste vollständig ausgeblendet ist, hinter der Systemstatusleiste rollt. Gibt es eine Möglichkeit, dieses Verhalten zu verhindern?CoordinatorLayout + CollapsingToolbarLayout Scrollen unter der Statusleiste

Hier sind die Screenshots haben:

Fully open

Almost closed

fully collapsed

Hier ist mein Layout:

<?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:id="@+id/coordinatorLayout"> 
<android.support.design.widget.AppBarLayout 
    android:id="@+id/main_appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/main_collapsing" 
     android:layout_width="match_parent" 
     android:layout_height="350dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginStart="140dp" 
     app:expandedTitleMarginBottom="90dp" 
     app:expandedTitleMarginEnd="64dp" 
     android:fitsSystemWindows="true"> 
     <ImageView 
      app:layout_collapseMode="parallax" 
      android:id="@+id/icon" 
      android:transitionName="pic" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="centerCrop" 
      android:src="@drawable/missing_album_art" 
      android:tint="#AA000000" 
      android:fitsSystemWindows="true"/> 
     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="20dp" 
      app:layout_collapseMode="parallax"> 
      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="bottom" 
       android:padding="20dp" 
       android:orientation="horizontal"> 
       <ImageView 
        android:layout_width="100dp" 
        android:layout_height="100dp" 
        android:id="@+id/smallicon"/> 
       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        android:layout_gravity="bottom" 
        android:padding="20dp"> 
        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:id="@+id/artist" 
         android:ellipsize="end" 
         android:singleLine="true" 
         android:textSize="24sp"/> 
        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:ellipsize="end" 
         android:singleLine="true" 
         android:id="@+id/date"/> 
       </LinearLayout> 
      </LinearLayout> 
     </FrameLayout> 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/main_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:layout_collapseMode="pin" /> 
    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 
<android.support.v7.widget.RecyclerView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:id="@+id/list" 
    android:dividerHeight="2dp" 
    android:transitionName="bottom"> 
</android.support.v7.widget.RecyclerView> 
</android.support.design.widget.CoordinatorLayout> 

Auch ich zwicken Parameter das Layout ein bi t bei der Erstellung der Aktivität:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
+0

Wenn Sie nicht möchten, dass 'Status Bar Color Transparent' ist, können Sie es mit' @ color/colorPrimaryDark 'ändern. –

+0

@jaydroider Ich möchte die Statusleiste transparent bleiben. Ich möchte nur nicht, dass die Symbolleiste hinter der Statusleiste blättert. – Timestretch

+0

Nehmen Sie Ihre 'Recycler-Ansicht' in' Frame-Layout' mit 'Höhe und Breite' nach' match_parent' und versuchen Sie es. –

Antwort

1

hinzufügen android:fitsSystemWindows="true" an die Wurzel des Layouts dh CoordinatorLayout

Die meiste Zeit, Ihre App nicht brauchen unter der Statusleiste oder der Navigationsleiste ziehen Aber wenn Sie das tun, müssen Sie sicherstellen, dass interaktive Elemente (wie Buttons) nicht unter ihnen versteckt sind. Das gibt Ihnen das Standardverhalten des android: fitsSystemWindows = "true" -Attributs: Es legt das Padding der View fest, um sicherzustellen, dass der Inhalt die Systemfenster nicht überlagert.

Lesen Sie mehr dazu here.

+0

Ich musste auch das Flag fitsSystemWindows = "true" vom Collapsingtoolbarlayout auf das Appbarlayout verschieben. Leider gibt es keine Farbe unter der Statusleiste, aber es sieht jetzt nicht so buggy aus! – Timestretch

Verwandte Themen