1

Ich habe lange gesucht, um dieses Problem ohne Erfolg zu lösen. Mein AppBarLayout überlappt den RecyclerView in einer meiner XML-Dateien. Ich habe versucht, die Ansichten ohne positive Ergebnisse neu zu ordnen. Jede Hilfe wird geschätzt. Hier ist mein Code:AppBarLayout überlappt RecyclerView

<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:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    android:fitsSystemWindows="true" 
 
    tools:openDrawer="start"> 
 

 
    <android.support.design.widget.CoordinatorLayout 
 
     xmlns:android="http://schemas.android.com/apk/res/android" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     android:fitsSystemWindows="true" 
 
     android:background="@color/bg_register"> 
 

 
     <android.support.design.widget.AppBarLayout 
 
      android:layout_width="match_parent" 
 
      android:layout_height="wrap_content"> 
 

 
      <android.support.v7.widget.Toolbar 
 
       android:id="@+id/toolbar" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="?attr/actionBarSize" 
 
       android:background="@color/toolbar"/> 
 

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

 
     <include layout="@layout/content" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:id="@+id/x"/> 
 
    </android.support.design.widget.CoordinatorLayout> 
 

 
    <android.support.design.widget.NavigationView 
 
     android:id="@+id/nav_view" 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="match_parent" 
 
     android:layout_gravity="start" 
 
     app:menu="@menu/activity_main_drawer" 
 
     android:clickable="true"/> 
 
</android.support.v4.widget.DrawerLayout>

Hier wird die XML-Datei des Inhalts:

<RelativeLayout 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" 
 
       xmlns:tools="http://schemas.android.com/tools" 
 
       app:layout_behavior="@string/appbar_scrolling_view_behavior" 
 
       android:orientation="vertical" 
 
       android:background="@color/bg_register" 
 
       android:paddingLeft="10dp" 
 
       android:paddingRight="10dp" 
 
       tools:showIn="@layout/activity"> 
 

 
    <TextView 
 
     android:padding="5dp" 
 
     android:id="@+id/textView" 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="@string/list" /> 
 

 
    <android.support.v7.widget.RecyclerView 
 
     android:layout_below="@id/textView" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     android:id="@+id/lv_recycler" 
 
     android:background="@color/white" 
 
     android:scrollbars="vertical" 
 
     android:clickable="true" 
 
     android:fadeScrollbars="true"/> 
 

 
</RelativeLayout>

+0

können Sie einen Screenshot einfügen? – suku

+0

Es scheint, als würde ich die Toolbar vom Bildschirm abstoßen, was ich sagen kann. Siehe Bild: https://postimg.org/image/80mfleobl/ – BrownT

+0

Es sieht gut aus für mich. Wenn Sie der Ansicht sind, dass die Recycleransicht den unteren Bildschirmrand berührt, fügen Sie einfach einen geeigneten 'layout_marginBottom' für die Recycleransicht hinzu. – suku

Antwort

7

Dieses Attribut in den unterhalb der Symbolleiste sind:

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Wenn Sie CoordinatorLayout und AppBarLayout verwenden, Sie setzen für die koordinierte Scrollen nach oben, wo die Symbolleiste zuerst aus dem Weg schiebt. Um dies zu erreichen, müssen Sie jedoch unterhalb der Werkzeugleiste das Verhalten der Scroll-Ansicht angeben. Dies richtet nicht nur den koordinierten Bildlauf ein, sondern teilt der CoordinatorLayout mit, die untere Ansicht so zu gestalten, dass sie unterhalb der Symbolleiste angezeigt wird.

Wenn Sie nicht möchten, dass das koordinierte Scrolling der Symbolleiste stattfindet, ersetzen Sie CoordinatorLayout durch eine vertikale LinearLayout.

+0

Das hat super funktioniert. Vielen Dank! – BrownT

1

Es ist nicht überlappend sieht. Fügen Sie dem Inhalt aus dem Haupt-XML einfach Ränder hinzu, wenn Sie dazwischen Leerzeichen haben möchten. Entfernen Sie außerdem die Ausrichtung von relationalem Layout im Stammverzeichnis aus dem Inhalt xml, da dies nicht funktionieren würde.

1

Ich habe das gleiche überlappende Problem, aber der Grund dafür war, hatte, dass ich

<android.support.constraint.ConstraintLayout 

als meine Wurzel Viewgroup gehabt haben, nicht

<android.support.design.widget.CoordinatorLayout 

so dafür überprüfen, wie gut:)