1

J'ai une carte Google dans un CollapsingToolbarLayout. La carte s'affiche parfaitement bien que la caméra cartographique ne fonctionne pas correctement.Carte Android ne défilant pas correctement dans CollapsingToolbarLayout

Lorsque vous tentez de faire glisser la carte pour la déplacer vers d'autres emplacements, l'animation n'est pas fluide et ne s'insère généralement pas en faisant glisser la carte, car le fichier CoordinatorLayout remplace la carte. Cela signifie que la carte ne défile pas lorsque vous essayez, par exemple, de faire glisser vers le haut sur la carte. Le fichier CoordinatorLayout défile à la place (NestedScrollView se déplace à la place de l'emplacement de changement de carte).

Est-ce que quelqu'un sait comment contourner ce problème?

<?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:background="@android:color/background_light" 
    android:fitsSystemWindows="true" 
    android:id="@+id/coordlayout" 
    > 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/main.appbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="80dp" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     android:fitsSystemWindows="true" 
     > 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:titleEnabled="true" 
      app:expandedTitleMarginStart="48dp" 
      app:expandedTitleMarginEnd="64dp" 
      > 


      <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
       android:name="com.google.android.gms.maps.SupportMapFragment" 
       android:id="@+id/map" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:layout_collapseMode="parallax" 
       app:layout_scrollFlags="scroll|enterAlways" 
       android:fitsSystemWindows="true"/> 

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

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:padding="20dp" 
     android:background="@color/colorPrimary"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/linearLayout"> 
     </LinearLayout> 

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



<android.support.design.widget.FloatingActionButton 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_margin="@dimen/activity_horizontal_margin" 
     android:src="@drawable/dots" 
     app:backgroundTint="#4fcd1e" 
     app:layout_anchor="@id/main.appbar" 
     app:layout_anchorGravity="bottom|right|end" 
     android:id="@+id/fab" /> 
</android.support.design.widget.CoordinatorLayout> 

Répondre

0

Un peu trop tard pour répondre. Ajoutez simplement le code mentionné ci-dessous dans votre méthode onCreate().

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appbar.getLayoutParams(); 
    AppBarLayout.Behavior behavior = new AppBarLayout.Behavior(); 
    behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() { 
     @Override 
     public boolean canDrag(AppBarLayout appBarLayout) { 
      return false; 
     } 
    }); 
    params.setBehavior(behavior); 

Le défilement de la carte deviendra correct.