4

Ich entwickle eine Android App. In meiner App verwende ich CollapsingtoolbarLayout zusammen mit RecyclerView. Beide arbeiten. Aber ich habe ein Problem mit der Positionierung von ihnen. Was ich will ist, ich möchte RecyclerView direkt unter Collapsing Toobar und ich möchte RecyclerView zusammen mit Toolbar gehen, wenn es zusammengebrochen ist. Aber mein Code funktioniert nicht wie erwartet.Wie wird RecyclerView unterhalb von CollapsingToolbarLayout platziert und reagiert auf die Symbolleiste, wenn sie in Android minimiert ist?

Das passiert jetzt.

enter image description here

Wie Sie Recycler Ansicht sehen kann, ist feste Position mit Werkzeugleiste abgedeckt ist. Es reagiert nicht auf minimierte Symbolleiste.

Das ist mein XML-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" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:fitsSystemWindows="true" 
    tools:context=".MainActivity"> 
    <android.support.v7.widget.RecyclerView 
     android:id="@+id/dc_rv_destination" 
     android:scrollbars="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/htab_appbar" 
     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/htab_collapse_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/main_activity_parallax_initial_height" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 
      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 
       <ImageView 
        android:id="@+id/htab_header" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="@drawable/apple" 
        android:fitsSystemWindows="true" 
        android:scaleType="centerCrop" 
        app:layout_collapseMode="parallax" /> 
       <TextView 
        android:layout_centerInParent="true" 
        android:text="HELLO" 
        android:textSize="20dp" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 
      </RelativeLayout> 
      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/main_activity_toolbar_height" 
       android:gravity="top" 
       android:minHeight="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:titleMarginTop="13dp" /> 
      <!-- <android.support.design.widget.TabLayout 
       android:id="@+id/htab_tabs" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:layout_gravity="bottom" 
       app:tabIndicatorColor="@android:color/white" />--> 
     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 
</android.support.design.widget.CoordinatorLayout> 

In Tätigkeit habe ich nichts konfiguriert mit Ausnahme RecyclerView Initialisierung und Daten darauf einstellen. Diese

ist, wie ich RecyclerView in Tätigkeit gesetzt

private void setDestinationRecyclerView() 
    { 
     RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getBaseContext()); 
     rcDestinations.setLayoutManager(mLayoutManager); 
     rcDestinations.setItemAnimator(new DefaultItemAnimator()); 
     regionsList = new ArrayList<Region>(); 
     destinationsAdapter = new DestinationsAdapter(regionsList,getBaseContext()); 
     rcDestinations.setAdapter(destinationsAdapter); 
     //add items and notify data changed 
    } 

Also, wie kann ich RecyclerView Reaktion auf CollapsingToolbarLayout machen, wenn es zusammengeklappt ist?

Antwort

12

Ich weiß nicht, ob Sie es bereits behoben haben. Sie vermissen jedoch

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

in Ihrem RecyclerView.

Versuchen wie folgt aus:

<android.support.v7.widget.RecyclerView 
    android:id="@+id/dc_rv_destination" 
    android:scrollbars="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
Verwandte Themen