13

マップは、appBarLayoutにネストされたcollapsingToolbarLayoutにあります。 アンドロイドデザインサポートライブラリのバージョン22.2.0と22.2.1では、coordinatorLayoutとは独立して地図の周りをパンすることができましたが、23.0.1では北/南軸の地図をパンすると、リサイクルビューを上/下にスクロールします。これはバグですか、またはtouchイベントをappBarLayoutからmapFragmentに渡す方法がありますか?CoordinatorLayoutでパンニングgoogleマップがrecyclerviewをアンドロイドデザインサポートライブラリでスクロールさせます。23.0.1

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fitsSystemWindows="true"> 

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

     <fragment 
      android:id="@+id/mapFragment" 
      android:name="com.google.android.gms.maps.MapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_collapseMode="parallax" /> 


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

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

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#44CCFF" 
    app:behavior_overlapTop="184dp" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|right" 
    android:layout_margin="16dp" 
    android:src="@drawable/ic_list_white_24dp" 
    app:backgroundTint="#3366FF" 
    app:fabSize="normal" /> 

+1

は、このアプリを削除:layout_behavior = "@文字列/ appbar_scrolling_view_behavior" あなたRecyclerViewに。 –

答えて

37

私は同じ問題に直面し、それをこのように解決しました。そのAppBarLayout.Behavior.DragCallbackが存在するために来た後

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

あなたは絶対伝説です。私はv23.1.0の新しいDragCallback機能について知っていましたが、新しいAppBarLayoutビヘイビアを作成する必要はありません。ありがとうございます –

+0

ありがとうございます。これは私のために働いた:) – Zlatko

+0

私はそれを使用していますが、これは展開可能なリストビューを停止します。 – AndreaCi

4

あなたが尋ね同じことがBug

として報告されました。これは、コンテナ内のイベントを無効にするかドラッグすることでした。ここで

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

は同じソリューションですが、Kotlinで:

val appBarLayout = findViewById<AppBarLayout>(R.id.appBar) 
    val params = appBarLayout.layoutParams as CoordinatorLayout.LayoutParams 
    val behavior = AppBarLayout.Behavior() 
    behavior.setDragCallback(object : AppBarLayout.Behavior.DragCallback() { 
     override fun canDrag(appBarLayout: AppBarLayout): Boolean { 
      return false 
     } 
    }) 
    params.behavior = behavior 
関連する問題