13

Bản đồ nằm trong collapsingToolbarLayout được lồng trong appBarLayout. Trong phiên bản 22.2.0 và 22.2.1 của thư viện hỗ trợ thiết kế android, tôi có thể xoay quanh bản đồ độc lập với coordinatorLayout nhưng trong 23.0.1, nếu tôi cố gắng xoay quanh bản đồ ở trục bắc/nam, nó gây ra recyclerview để cuộn lên/xuống. Đây có phải là một lỗi hoặc là có một cách để vượt qua các sự kiện liên lạc từ appBarLayout đến mapFragment?Xoay bản đồ google trong CoordinatorLayout khiến recyclerview cuộn trong thư viện hỗ trợ thiết kế android 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

loại bỏ ứng dụng này: layout_behavior = "@ string/appbar_scrolling_view_behavior" trên RecyclerView của bạn. –

Trả lời

37

tôi phải đối mặt với cùng một vấn đề và giải quyết nó theo cách này.

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

Bạn truyền thuyết tuyệt đối. Tôi biết về tính năng DragCallback mới trong v23.1.0 nhưng tôi không biết bạn phải tạo một hành vi AppBarLayout mới. Cảm ơn rất nhiều –

+0

Cảm ơn bạn. điều này làm việc cho tôi :) – Zlatko

+0

Tôi đang sử dụng điều đó, nhưng điều này sẽ dừng chế độ xem danh sách Có thể mở rộng để mở rộng. – AndreaCi

4

Cùng bạn hỏi đã được báo cáo là Bug

Sau đó AppBarLayout.Behavior.DragCallback đến sự tồn tại. Đây là bạn có thể vô hiệu hóa hoặc kéo các sự kiện bên trong vùng chứa.

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

Đây là giải pháp tương tự nhưng trong 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 
Các vấn đề liên quan